我定义了一个像这样的函数
def f(v,l=[]):
l.append(v)
return l
根据我的理解,输出应该是这样的:
第一个电话应该返回[0]
第二个电话应该返回[1]
第三个电话应该返回[2]
但..这里是真正的输出
>>> f(0)
[0]
>>> f(1)
[0, 1]
>>> f(2)
[0, 1, 2]
答案 0 :(得分:4)
你必须做
def f(v, l=None):
if l is None:
l = []
l.append(v)
return l
因为在l=[]
中,此列表[]
仅在加载脚本时创建一次。
更精确(如@ PM2Ring所说)它是在执行函数定义时创建的,而不是在调用函数时创建的。