1. 程式人生 > 其它 >python:深拷貝,淺拷貝,賦值引用

python:深拷貝,淺拷貝,賦值引用

深淺拷貝用法來自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僅僅將最外層的內容在記憶體中新建了一份出來,字典第二層的列表並沒有在記憶體中新建,所以你修改了新模版,預設模版也被修改了。