python深拷貝與淺拷貝

2021-09-29 07:54:06 字數 562 閱讀 6747

深淺拷貝異同主要體現於可變物件上,對於tuple之類的不可變對面,深淺拷貝後,位址值和變數值都是一樣的,但是對與list之類的可變物件,深淺拷貝後,差異性很大

>>>import copy

>>>a = (1,2,3)

>>>b = a

>>>c = copy.copy(a)

>>>d = copy.deepcopy(a)

>>>id(a)==id(b)==id(c)==id(d)

true

>>>a = [1,2,3,[4,4]]

>>>b = a

>>>c = copy.copy(a)

>>>d = copy.deepcopy(a)

>>>a, b, c, d

[1,2,3,[4,4,4],5] #a

[1,2,3,[4,4,4],5] #b, 使用is,b的位址值和變數值一直保持和a一樣。ab指向同一塊記憶體

[1,2,3,[4,4]] #d 使用deepcopy,重新劃分一塊記憶體給d,位址值改變,d不跟隨a變動

Python 淺拷貝與深拷貝

淺拷貝 構造方法或切片 做的是淺拷貝 即拷貝了最外層容器,副本中的元素是原容器中元素的引用 在 python 中,通過乙個物件向另外乙個物件賦值,實際僅僅是賦值了物件的引用,而非建立乙個物件並賦值。那如何真正拷貝物件呢?我們看一下兩種不同的拷貝方式。先從乙個示例看起 anndy anndy age ...

Python 淺拷貝與深拷貝

以下例項是使用 copy 模組的 copy.copy 淺拷貝 和 copy.deepcopy usr bin python coding utf 8 import copy a 1,2,3,4,a b 原始物件 b a 賦值,傳物件的引用 c copy.copy a 物件拷貝,淺拷貝 d copy....

python 深拷貝與淺拷貝

當乙個變數 的時候,約定為 指向位址的過程 如果copy.copy 拷貝的是元組,那麼它不會進行淺拷貝,僅僅是指向 因為元組是不可變資料型別,那麼意味著資料一定不能修改,因此用copy.copy的 時候它會自動判斷,是指向。如果,用copy.copy copy.deepcopy 對乙個全部是不可變型...