1. 程式人生 > >python 的深拷貝與淺拷貝

python 的深拷貝與淺拷貝

bsp 分享 ima 都是 跟著 class 淺拷貝和深拷貝 分享圖片 src

一句話總結,淺拷貝只拷貝父對象,不拷貝子對像。

註意:淺拷貝和深拷貝的不同僅僅是對組合對象來說,所謂的組合對象就是包含了其它對象的對象,如列表,類實例。而對於數字、字符串以及其它“原子”類型,沒有拷貝一說,產生的都是原對象的引用。下面通過代碼來演示

import copy
a=[[1,2],[3,4]]
b=copy.copy(a)
c=copy.deepcopy(a)

現在a b c都是等於[[1,2],[3,4]]

現在我們來改變a的父對象

a.append(5)

現在再來打印a b c的值,變成了

技術分享圖片

這是因為深拷貝與淺拷貝都會拷貝父對象,對於父對象來說,他們都是獨立的,所以值不會變。

現在我們來改變a的子對象

 a[0][0]=0

現在來打印a b c的值

技術分享圖片

淺拷貝只拷貝父對象,所以a的子對象改變時,淺拷貝的b的子對象也跟著變了,而深拷貝的c的子對象是獨立的,所以沒有變

python 的深拷貝與淺拷貝