直接賦值:其實就是物件的引用(別名)。
淺拷貝(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.元組本身是不可...