python:深拷貝,淺拷貝,賦值引用
阿新 • • 發佈:2022-03-08
深淺拷貝用法來自copy模組。
匯入模組:import copy
淺拷貝:copy.copy
深拷貝:copy.deepcopy
對於 數字 和 字串 而言,賦值、淺拷貝和深拷貝無意義,因為其永遠指向同一個記憶體地址。
字面理解:淺拷貝指僅僅拷貝資料集合的第一層資料,深拷貝指拷貝資料集合的所有層。所以對於只有一層的資料集合來說深淺拷貝的意義是一樣的,比如字串,數字,還有僅僅一層的字典、列表、元祖等.
字典(列表)的深淺拷貝
賦值:
import copy n1 = {'k1':'wu','k2':123,'k3':['alex',678]} n2 = n1
n2 = n1
淺拷貝:
import copy n1 = {'k1':'wu','k2':123,'k3':['alex',678]} n3 = copy.copy(n1)
深拷貝:
import copy n1 = {'k1':'wu','k2':123,'k3':['alex',678]} n4 = copy.deepcopy(n1)
深拷貝的時候python將字典的所有資料在記憶體中新建了一份,所以如果你修改新的模版的時候老模版不會變。相反,在淺copy 的時候,python僅僅將最外層的內容在記憶體中新建了一份出來,字典第二層的列表並沒有在記憶體中新建,所以你修改了新模版,預設模版也被修改了。