比方說,我有這樣的代碼: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