0

我从这篇文章的答案中得到了这个问题。

考虑这段代码

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 是本地函数

谢谢

4

1 回答 1

1

看看test.func_defaults或者也许test.__defaults__。我想你会在那里找到你想要的。

参考:http ://effbot.org/zone/default-values.htm

于 2013-11-13T20:55:30.243 回答