我从这篇文章的答案中得到了这个问题。
考虑这段代码
def test(a,dict={}):
b=5
dict[a]=1
print dict
print locals()
test(1)
test(2)
输出是:
{1: 1}
{'a': 1, 'b': 5, 'dict': {1: 1}}
{1: 1, 2: 1}
{'a': 2, 'b': 5, 'dict': {1: 1, 2: 1}}
正如我可以推断的那样,字典有一个“全局”引用。
作为默认参数传递给函数的内容在命名空间中的某处是持久的。
它在再次调用该函数时共享。但是我怎么知道当前的情况dict
。我可以有一个dict
函数的外部并将其传递dict
给函数以了解它的内容dict
。
但我的问题是默认参数的dict
存在位置(在命名空间中)以及如何访问它。这是什么时候dict
创建的?第一次调用函数或def
执行语句时?
顺便说一句,打印locals()
显示 dict 是本地函数
谢谢