python 深拷貝 淺拷貝

2021-09-24 19:49:06 字數 832 閱讀 3991

淺拷貝是對於乙個物件的頂層拷貝

通俗的理解是:拷貝了引用,並沒有拷貝內容

深拷貝是對於乙個物件所有層次的拷貝(遞迴)

拷貝字典:值相當於鍵的引用 所以copy.copy()為淺拷貝

淺拷貝對不可變型別和可變型別的copy不同

copy.copy對於可變型別,會進行淺拷貝

copy.copy對於不可變型別,不會拷貝,僅僅是指向

#可變型別

in [88]

: a =[11

,22,33

]in [89]

: b = copy.copy(a)

in [90]

:id(a)out[90]

:59275144

in [91]

:id(b)out[91]

:59525600

in [92]

44)in [93]

: aout[93]

:[11,

22,33,

44]in [94]

: bout[94]

:[11,

22,33]

#不可變型別

in [95]

: a =(11

,22,33

)in [96]

: b = copy.copy(a)

in [97]

:id(a)out[97]

:58890680

in [98]

:id(b)out[98]

:58890680

淺拷貝:copy.copy()

深拷貝:copy.deepcopy()

python 淺拷貝 深拷貝

直接賦值 其實就是物件的引用 別名 淺拷貝 copy 拷貝父物件,不會拷貝物件的內部的子物件。深拷貝 deepcopy copy 模組的 deepcopy 方法,完全拷貝了父物件及其子物件。usr bin python import copy a 1,2,3,4,a b 原始物件 b a 賦值,傳物...

python深拷貝 淺拷貝

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

python 深拷貝 淺拷貝

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