这不是一个家庭作业问题。当我试图回答关于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={}
?