物件的淺拷貝和深拷貝

2021-10-06 04:03:56 字數 1112 閱讀 4928

淺拷貝:python拷貝一般都是淺拷貝。拷貝時,物件包含的子物件內容不拷貝。因此,源物件和拷貝物件引用同乙個物件

深拷貝:使用copy模組的deepcopy函式,遞迴拷貝物件中包含的子物件。源物件和拷貝物件所有的子物件也不同

變數的數值操作:只是形成兩個變數,實際上時指向同乙個物件

// #測試淺拷貝和深拷貝

import copy

class

mobilephone

: def __init__

(self,cpu,screen)

: self.cpu=cpu

self.screem=screen

class

cpu:

def calculate

(self)

:print

("算你個12345"

)print

("cpu物件:"

,self)

class

screen

: def show

(self)

:print

("顯示乙個好看的畫面,亮瞎你的眼"

)print

("screen物件"

,self)

#測試變數的賦值

c1=cpu()

c2=c1

print

(c1)

print

(c2)

#測試淺拷貝

s1=screen()

m1=mobilephone

(c1,s1)

m2=copy.

copy

(m1)

print

(m1,m1.cpu,m1.screem)

print

(m2,m2.cpu,m2.screem)

#測試深複製

m3=copy.

deepcopy

(m1)

print

(m1,m1.cpu,m1.screem)

print

(m3,m3.cpu,m3.screem)

變數賦值操作結果:

淺拷貝結果:

物件的淺拷貝和深拷貝

淺拷貝 1.用for迴圈獲取引用物件的屬性和值,賦值給新物件 object.prototype.num 1 person1 function clone origin,target for var key in origin return tar var person2 clone person1 ...

物件的深拷貝和淺拷貝

引用資料型別的名稱是存在棧記憶體中,值存在堆記憶體中,在棧內會存在乙個引用的位址指向堆記憶體中的值 淺拷貝 深拷貝 實現淺拷貝的方法 1 assign let copyobj object.assign obj 只有第一層不聯動,深層的還是聯動的 2 concat var copyarr arr.c...

物件的淺拷貝和深拷貝

拷貝就是複製,淺拷貝和深拷貝也就是淺複製和深複製。網上關於淺拷貝和深拷貝的內容有很多,原理就不再多贅述了。一言以蔽之,所謂淺拷貝就是一層複製,所謂深拷貝就不僅僅是一層複製,還可以多層複製。淺拷貝去複製基本型別值是沒什麼問題的,但是遇到了陣列 物件這些引用型別值就沒轍了。為什麼沒轍了呢?因為對於這些引...