首頁 >後端開發 >Python教學 >Python 在分配物件時是否建立副本或參考?

Python 在分配物件時是否建立副本或參考?

DDD
DDD原創
2024-12-16 18:50:15247瀏覽

Does Python Create Copies or References When Assigning Objects?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn