可能重复:
“Least Astonishment” in Python: The Mutable Default Argument为什么这个局部变量可以保持它的价值在功能
我最近在Python中遇到了问题。 代码:
def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
输出将
[1]
[1, 2]
[1, 2, 3]
,但为什么在本地列表中的值:在函数F左保持不变? 因为L是一个局部变量,我想输出应该是:
[1]
[2]
[3]
我尝试另一种方式来实现这个功能: 代码:
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
这一次,输出为:
[1]
[2]
[3]
我只是不明白为什么... 有没有人有一些想法?非常感谢。
阅读此http://effbot.org/zone/default-values.htm – spicavigo