Python的深淺拷貝以及應用場景
深淺拷貝用法來自copy模塊。
導入模塊:import copy
淺拷貝:copy.copy
深拷貝:copy.deepcopy
對於 數字 和 字符串 而言,賦值、淺拷貝和深拷貝無意義,因為其永遠指向同一個內存地址。
字面理解:淺拷貝指僅僅拷貝數據集合的第一層數據,深拷貝指拷貝數據集合的所有層。所以對於只有一層的數據集合來說深淺拷貝的意義是一樣的,比如字符串,數字,還有僅僅一層的字典、列表、元祖等.
字典(列表)的深淺拷貝
賦值:
import copy n1 = {'k1':'wu','k2':123,'k3':['alex',678]} 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僅僅將最外層的內容在內存中新建了一份出來,字典第二層的列表並沒有在內存中新建,所以你修改了新模版,默認模版也被修改了。