Python學習筆記 淺拷貝和深拷貝

2021-10-05 07:29:18 字數 1835 閱讀 2753

#淺拷貝:兩個指向的記憶體位址相同,指向同乙個記憶體

import copy

#測試物件的淺拷貝和深拷貝

class

mobilephone

:def

__init__

(self,cpu,screen)

: self.cpu=cpu

self.screen=screen

class

cpu:

defcalculate

(self)

:print

("算你個123"

)print

("cpu物件:"

,self)

class

screen

:def

show

(self)

:print

("顯示"

)print

("screen物件:"

,self)

#測試變數賦值

c1=cpu

c2=c1

print

("c1的位址是{},\nc2的位址是{}"

.format(id

(c1),id

(c2)))

print(id

(c1),id

(c2)

)#測試淺拷貝

s1=screen(

)m1=mobilephone(c1,s1)

m2=copy.copy(m1)

print

(m1,m1.cpu,m1.screen)

print

(m2,m2.cpu,m2.screen)

#測試深拷貝

m3=copy.deepcopy(m1)

print

(m1,m1.cpu,m1.screen)

print

(m3,m3.cpu,m3.screen)

執行結果

c1的位址是2295466266088

,c2的位址是2295466266088

2295466266088

2295466266088

<__main__.mobilephone object at 0x0000021676659a90

>

<

class

'__main__.cpu'

>

<__main__.screen object at 0x0000021676655e80

>

<__main__.mobilephone object at 0x0000021676659b70

>

<

class

'__main__.cpu'

>

<__main__.screen object at 0x0000021676655e80

>

<__main__.mobilephone object at 0x0000021676659a90

>

<

class

'__main__.cpu'

>

<__main__.screen object at 0x0000021676655e80

>

<__main__.mobilephone object at 0x0000021676674048

>

<

class

'__main__.cpu'

>

<__main__.screen object at 0x000002167667f0b8

>

筆記 Python深拷貝和淺拷貝

a為已有容器,b作為a的拷貝 淺拷貝 a,b位址不同,a,b中元素的位址是相同的。淺拷貝的特點,只是將容器內的元素位址複製了乙份。如果修改a中的可變型別 a,b中對應元素的位址不變,內容保持一致 如果修改a中的不可變型別 a中對應元素的位址和內容會改變,a,b對應元素位址和內容不同 深拷貝 a,b位...

python 深拷貝 Python深拷貝和淺拷貝!

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

JS學習筆記 淺拷貝和深拷貝

淺拷貝是指,在複製變數時,對於引用型別的變數,只拷貝其引用,不拷貝其在堆中的真實資料。深拷貝是指,拷貝堆中的資料,乙個新的引用指向新拷貝出來的資料。判斷淺拷貝還是深拷貝,乙個很簡單的方法就是使用全等 當兩個物件進行比較時,只有指向同乙個物件,結果才會是true。當向arr中push乙個obj,全等的...