+=
运算符执行奇数列表分配。
这是一个家庭项目。我正在Ubuntu上运行并使用Python 3.x。
使用+=
时会出现这种意外行为:
class foo:
def __init__(self, arg=[]):
self.arg = arg
x = foo()
for _ in range(100):
x.arg += [foo()]
x.arg == foo().arg
# True
如果我不这样做:
class foo:
def __init__(self, arg=[]):
self.arg = arg
x = foo()
for _ in range(100):
x.arg = x.arg + [foo()]
x.arg == foo().arg
# False
在第一种情况下,我希望x.arg == foo().arg
返回False
而不返回True
。
这可能是“Least Astonishment” and the Mutable Default Argument的副本,但是为什么x.arg += [foo()]
的行为不同于x.arg = x.arg + [foo()]
?