为什么字典变量的值在方法调用之间持续存在?

时间:2016-04-12 20:34:31

标签: python language-design mutable

这不是一个家庭作业问题。当我试图回答关于SO的问题时,我遇到了这个问题。它引起了我的兴趣。我在网上搜索了一会儿,找不到任何东西。这是代码:

def unravel(data, resultsdict={}):
    for k in data:
        if isinstance(data[k],dict):
            unravel(data[k], resultsdict)
        else:
            resultsdict[k] = data[k]
    return resultsdict

执行命令

>>> print unravel({'a': 'b'})
{'a': 'b'}
>>> print unravel({'c': 'd'})
{'a': 'b', 'c': 'd'}

为什么第一个方法返回的字典会在第二个调用中使用,尽管默认参数为resultsdict={}

0 个答案:

没有答案