python - 复合类型和标量类型的生命周期有什么区别?

标签 python variables python-2.7

以下是教程的异常(exception)情况。


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

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 的生命周期存在差异?

最佳答案

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

关于python - 复合类型和标量类型的生命周期有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16710584/

相关文章:

python - 为什么父类(super class)属性在当前类的命名空间中不可用?

python - 查找窗口内控件的句柄

database - Swift - Firebase 多个快照

javascript - Laravel Blade 在 php 中传递 Javascript 变量

Python:没有名为 contextlib 的模块?

javascript - MOOTOOLS 变量范围

Django 模型 : One to one relationship between objects of the same model class

python - Python 中 '\0\0' 的含义?

Python 2.7 在列表列表中查找最小值、最大值

python - 如何在python中将负整数值转换为十六进制