Python 在賦值時複製物件嗎?
在 Python 中,變數的賦值不會建立物件的副本,而是建立對它們的參考。此行為可能會導致意外結果。
範例:
考慮以下程式碼:
dict_a = dict_b = dict_c = {} dict_c['hello'] = 'goodbye' print(dict_a) print(dict_b) print(dict_c)
意外的是,此程式碼會產生以下內容輸出:
{'hello': 'goodbye'} {'hello': 'goodbye'} {'hello': 'goodbye'}
解釋:
當您指派dict_a = dict_b = dict_c = {} 時,您並未建立三個單獨的字典。相反,您將創建一本字典並為其分配三個名稱(引用)。因此,對其中一個引用所做的任何修改都會影響所有引用。
解決方案:
要建立物件的獨立副本,您可以使用字典.copy() 方法或 copy.deepcopy() 函數。
使用dict.copy():
dict_a = dict_b.copy() dict_c = dict_b.copy()
使用 copy.deepcopy():
import copy dict_a = copy.deepcopy(dict_b) dict_c = copy.deepcopy(dict_b)
以上是Python 在分配物件時是否建立副本或參考?的詳細內容。更多資訊請關注PHP中文網其他相關文章!