+=python中的运算符似乎在列表上意外运行.谁能告诉我这里发生了什么?
class foo:
bar = []
def __init__(self,x):
self.bar += [x]
class foo2:
bar = []
def __init__(self,x):
self.bar = self.bar + [x]
f = foo(1)
g = foo(2)
print f.bar
print g.bar
f.bar += [3]
print f.bar
print g.bar
f.bar = f.bar + [4]
print f.bar
print g.bar
f = foo2(1)
g = foo2(2)
print f.bar
print g.bar
Run Code Online (Sandbox Code Playgroud)
OUTPUT
[1, 2]
[1, 2]
[1, 2, 3]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1]
[2] …Run Code Online (Sandbox Code Playgroud) 我开始阅读python的+ =语法并偶然发现以下帖子/答案: 关于+ =的交互式代码
所以我注意到框架和物体之间似乎存在差异.
在全局框架中,即使它们是不同的变量,它们也指向同一个对象; 如果这条线
l2 += [item]
Run Code Online (Sandbox Code Playgroud)
相反
l2 = l2 + [item]
Run Code Online (Sandbox Code Playgroud)
然后'l2'在该行运行时成为一个单独的对象.我最大的问题是你何时想要一个变量指向一个单独的对象?另外,为什么以及何时要让它们指向同一个对象?
任何解释或用例将不胜感激!如果您能提及与数据科学相关的任何内容,那就另外了