复合类型和标量类型的生命周期有何不同?

时间:2013-05-23 09:45:29

标签: python variables python-2.7

以下是教程之外的内容。


默认值仅计算一次。当默认值是可变对象(如列表,字典或大多数类的实例)时,这会有所不同。例如,以下函数会累积在后续调用中传递给它的参数:

def f(a, L=[]):
    L.append(a)
    return L

print f(1)
print f(2)
print f(3)

这将打印

[1]
[1, 2]
[1, 2, 3]

但是,当我使用标量变量尝试此操作时:

>>> def acu(n, a = 0):
    "Test if local variables in functions have static duration"
    a = a + n
    return a


>>> acu (5)
5
>>> acu (5)
5

那么为什么L和a的生命周期之间存在差异?

1 个答案:

答案 0 :(得分:3)

没有区别。在第二部分中,您将重新绑定本地名称a,而不是改变它指向的对象。