首頁 > 後端開發 > Python教學 > Python 中的普通賦值、淺拷貝和深拷貝有什麼不同?

Python 中的普通賦值、淺拷貝和深拷貝有什麼不同?

Mary-Kate Olsen
發布: 2024-12-31 16:25:15
原創
207 人瀏覽過

What's the Difference Between Normal Assignment, Shallow Copy, and Deep Copy in Python?

理解不同的複製操作:普通賦值、淺複製和深複製

在Python中,有多種方法來創建變數的副本和物體。普通賦值操作、淺拷貝和深拷貝在處理原始變數和複製變數之間關係的方式上有所不同。

普通賦值

普通賦值運算(例如, a = b) 只要將新變數指向現有物件。現在,兩個變數都引用記憶體中的相同物件。對一個變數所做的更改將影響另一個變數。

淺複製

淺複製建立一個新對象,該物件引用與原始物件相同的基礎資料。對於不可變物件(例如字串、數字),這相當於普通賦值。但是,對於可變物件(例如列表、字典),新物件包含對原始物件的參考。

在以下程式碼片段:

import copy

a = [1, 2, 3]
b = copy.copy(a)
登入後複製

a 和 b 都是列表。使用 copy.copy 複製 a 時,會建立一個新列表,但它包含與 a 相同的列表元素的參考。因此,修改 b 也會修改 a。

深度複製

深度複製建立一個新對象,並遞歸複製原始物件的所有資料。這意味著即使原始物件包含對其他可變物件的引用,新物件也將具有這些物件的獨立副本。

在以下程式碼片段中:

import copy

a = [1, 2, 3]
c = copy.deepcopy(a)
登入後複製

c 是一個包含自己的清單元素副本的新清單。對 c 所做的任何更改都不會影響 a。

結論

複製操作的選擇取決於特定的用例。對於不可變對象,普通賦值或淺複製就足夠了。對於可變對象,建議進行深複製,以確保副本的變更不會影響原始物件。

以上是Python 中的普通賦值、淺拷貝和深拷貝有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板