比方说,我有这样的代码:dict.get()方法返回一个指针
my_dict = {}
default_value = {'surname': '', 'age': 0}
# get info about john, or a default dict
item = my_dict.get('john', default_value)
# edit the data
item[surname] = 'smith'
item[age] = 68
my_dict['john'] = item
问题变得清晰,如果我们现在检查DEFAULT_VALUE的价值:
>>> default_value
{'age': 68, 'surname': 'smith'}
很明显,my_dict.get()
未返回default_value的值,而是返回指向其的指针(?)。
的问题可以通过代码改变所工作围绕:
item = my_dict.get('john', {'surname': '', 'age': 0})
,但似乎并没有成为一个很好的办法做到这一点。任何想法,意见?
这是蟒蛇的一个非常重要的原则 - *所有*值传递 引用。这些引用的可变性是一个完全不同的问题(尽管它通常以这种方式绊倒人)。 –
我确定以前我已经阅读过关于它的内容,但是如果长时间不使用某种语言,您往往会忘记一些事情。感谢您的澄清。 – Armandas
为什么你的答案与问题中提供的答案有任何不同。问题似乎更多的是寻找返回字典的新实例的优雅方式,但只是在需要时才创建它。 – Dunes