python 淺拷貝 深拷貝

2021-09-12 19:46:39 字數 650 閱讀 1052

直接賦值:其實就是物件的引用(別名)。

淺拷貝(copy):拷貝父物件,不會拷貝物件的內部的子物件。

深拷貝(deepcopy): copy 模組的 deepcopy 方法,完全拷貝了父物件及其子物件。

#!/usr/bin/python

import copy

a = [1, 2, 3, 4, [『a』, 『b』]] #原始物件

b = a #賦值,傳物件的引用

c = copy.copy(a) #物件拷貝,淺拷貝 @@@當a的內部物件發生變化時,c不變

d = copy.deepcopy(a) #物件拷貝,深拷貝 @@@ 從此與a再無關係

print( 'a = ', a )

print( 'b = ', b )

print( 'c = ', c )

print( 'd = ', d )

以上例項執行輸出結果為:

('a = ', [1, 2, 3, 4, [『a』, 『b』, 『c』], 5])

('b = ', [1, 2, 3, 4, [『a』, 『b』, 『c』], 5])

('c = ', [1, 2, 3, 4, [『a』, 『b』, 『c』]])

('d = ', [1, 2, 3, 4, [『a』, 『b』]])

python深拷貝 淺拷貝

在python中,物件賦值實際上是物件的引用。當建立乙個物件,然後把它賦給另乙個變數的時候,python並沒有拷貝這個物件,而只是拷貝了這個物件的引用 一般有三種方法,alist 1,2,3,a b 1 直接賦值,傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變 alist 1,2,3,...

python 深拷貝 淺拷貝

淺拷貝是對於乙個物件的頂層拷貝 通俗的理解是 拷貝了引用,並沒有拷貝內容 深拷貝是對於乙個物件所有層次的拷貝 遞迴 拷貝字典 值相當於鍵的引用 所以copy.copy 為淺拷貝 淺拷貝對不可變型別和可變型別的copy不同 copy.copy對於可變型別,會進行淺拷貝 copy.copy對於不可變型別...

python 深拷貝 淺拷貝

1.b a只是引用傳遞 2.copy.copy 產生了新的引用,但是淺複製,指向的是同乙個物件 3 c a,b 只是傳遞了引用 4 copy.deepcopy 如果列表裡面的都是引用型別,則是深拷貝 如果列表中的元素是基本型別,則deepcopy也相當於淺拷貝 5.理解下面的原因 6.元組本身是不可...