可能重复:
Python 中的“Least Astonishment”:可变默认参数
列表扩展了奇怪的行为
Pyramid traversal view lookup using method names
假设我有这个功能:
def a(b=[]):
b += [1]
print b
调用它会产生以下结果:
>>> a()
[1]
>>> a()
[1, 1]
>>> a()
[1, 1, 1]
当我更改b += [1]
为b = b + [1]
时,函数的行为会发生变化:
>>> a()
[1]
>>> a()
[1]
>>> a()
[1]
与有何b = b + [1]
不同?b += [1]
为什么会这样?