【发布时间】:2012-12-29 19:06:59
【问题描述】:
可能重复:
“Least Astonishment” in Python: The Mutable Default Argument
List extending strange behaviour
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] 有何不同?为什么会这样?
【问题讨论】:
-
您在函数范围内重新绑定
b...使用b+=不会这样做... -
而
list += sequence和list = list + list不一样...
标签: python list default-arguments