從定義上來說:
1 、 copy.copy()是淺複製,只拷貝父物件,不會拷貝物件的內部的子物件。
2、 copy.deepcopy()是深複製,拷貝物件及其子物件。
import copy
a = [1, 2, 3, 4, [『a』, 『b』]] #原始物件
b = a #賦值,傳物件的引用
c = copy.copy(a) #物件拷貝,淺拷貝
d = copy.deepcopy(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』]]
總結:a到b是賦值;a到c是淺複製,不會對原有的a列表子元素進行拷貝,只會拷貝父物件;a到d是深複製,即原始物件。
淺複製與深複製
舉個複製 的例子 function clone p,s for var prop in p return s var a var b clone a,b b.hobby 1 reading b.hobby 1 reading c.hobby 1 reading 由上面的例子可以看出,當執行淺複製時,...
深複製與淺複製
2者主要區別 是否為成員變數分配新記憶體空間 複製建構函式有2種 深複製與淺複製 當將乙個物件a複製給另乙個物件b時,系統會呼叫複製建構函式 編譯器預設的複製建構函式是淺拷貝,它將原物件的每乙個成員變數複製到新物件的成員變數中去。因而最後兩個物件的變數均指向相同的資料成員的記憶體位址。當資料成員中沒...
淺複製與深複製
1.淺複製 被複製物件的所有變數都含有與原來的物件相同的值,而其所有的對其他物件的引用都仍然指向原來的物件。說明 乙個物件中的資料成員 include using namespace std class test test const test c 複製建構函式,提供乙個同型別物件作為引數 void...