在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
输出
[1, 2]
[1, 2]
[1, 2, 3]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1]
[2]
foo += bar
看起来会影响类的每个实例,而 foo = foo + bar
的行为符合我的预期。
+=
运算符被称为 "复合赋值运算符"。
+
运算符。我认为在这种情况下,+=
追加是完全合理的。 - Skilldrickmy_list += [x]
是很糟糕的风格。请不要这样做。 - anon01