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]

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

>>> 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的寿命之间存在这种差异?

解决方法:

没有区别.在第二部分中,您将重新绑定本地名称a,而不是对其指向的对象进行变异.

上一篇:LeetCode-53-Maximum Subarray


下一篇:Javascript单例:如何访问私有变量?