所以我知道默认的可变参数getcha,但我想了解它是如何在内部工作的:
In [1]: def f(a=[]):
...: a.append(1)
...: print a
...:
In [2]: f()
[1]
In [3]: f()
[1, 1]
由于列表未在两个函数调用之间取消分配,因此必须在函数调用中存在对该列表的引用。但是,查看globals()
并未显示任何内容。是否存在与函数声明def f(a=[]):
关联的某种命名空间,其中参数a
绑定到列表?这是列表通过函数调用存活的原因吗?