問題陳述:
在Python 中,建立物件的副本可能會看起來就像將一個物件分配給另一個物件一樣簡單。然而,這個簡單的賦值創建了對原始物件的引用,而不是一個新的獨立實例。對一個物件的修改將傳播到另一個物件。這可能會導致意外的行為和潛在的錯誤。
解決方案:使用copy.deepcopy() 進行深度複製
為了創建物件的真正獨立副本,我們使用copy 模組中的copy.deepcopy() 函數。此函數執行深度複製,遞歸複製原始物件的所有屬性和子物件。產生的副本是一個獨立的對象,擁有自己的記憶體位置和值。
範例:
<code class="python">import copy original_obj = {'name': 'Alice', 'age': 30} copy_obj = copy.deepcopy(original_obj) copy_obj['name'] = 'Bob' # Modify copy print(original_obj) # Output: {'name': 'Alice', 'age': 30} (Unchanged) print(copy_obj) # Output: {'name': 'Bob', 'age': 30} (Independent)</code>
在這種情況下,copy_obj 真正獨立於original_obj。修改一個物件不會影響另一個物件。這使您能夠創建具有不同值的多個對象,同時共享相同的初始屬性。
注意:
淺複製,可以透過 copy.copy() 實現,僅複製資料結構的值,保留任何包含的參考原樣。通常首選深度複製以確保物件獨立性。
以上是如何在Python中建立物件的獨立副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!