#淺拷貝:兩個指向的記憶體位址相同,指向同乙個記憶體
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,全等的...