Python变量奇怪的问题

时间:2016-11-14 05:29:40

标签: python

抱歉,我真的不知道如何在标题中准确描述这个问题

我定义了一个像这样的函数

def f(v,l=[]):
    l.append(v)
    return l

根据我的理解,输出应该是这样的:

第一个电话应该返回[0]

第二个电话应该返回[1]

第三个电话应该返回[2]

但..这里是真正的输出

>>> f(0)
[0]
>>> f(1)
[0, 1]
>>> f(2)
[0, 1, 2]

1 个答案:

答案 0 :(得分:4)

你必须做

def f(v, l=None):
    if l is None:
        l = []
    l.append(v)
    return l

因为在l=[]中,此列表[]仅在加载脚本时创建一次。

更精确(如@ PM2Ring所说)它是在执行函数定义时创建的,而不是在调用函数时创建的。

请参阅:http://docs.python-guide.org/en/latest/writing/gotchas/