賦值 淺拷貝 深拷貝

2021-10-17 15:26:48 字數 1224 閱讀 8925

變數的賦值操作

只是形成兩個變數,實際上還是指向同乙個物件,意味著隨後原物件怎麼變化,賦值後的會跟著做出相應的變化。

淺拷貝

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

深拷貝

使用copy模組的deepcopy函式,遞迴拷貝物件中包含的子物件,原物件和拷貝物件所有的子物件也不相同。原物件發生的變化與拷貝後的無關,即拷貝後的不會隨著原物件發生變化。

class

cpu:

pass

class

disk

:pass

class

computer

:def

__init__

(self,cpu,disk)

: self.cpu=cpu

self.disk=disk

#變數的賦值

cpu1=cpu(

)cpu2=cpu1

print

(cpu1,

id(cpu1)

)#<__main__.cpu object at 0x000002369d9aa4f0> 2433595647216

print

(cpu2,

id(cpu2)

)#<__main__.cpu object at 0x000002369d9aa4f0> 2433595647216

disk=disk(

)computer1=computer(cpu1,disk)

#淺拷貝

import copy

computer2=copy.copy(computer1)

print

(computer1,computer1.cpu,computer1.disk)

print

(computer2,computer2.cpu,computer2.disk)

#深拷貝

computer3=copy.deepcopy(computer1)

print

(computer1,computer1.cpu,computer1.disk)

print

(computer3,computer3.cpu,computer3.disk)

淺拷貝 深拷貝和淺賦值 深賦值

include includeusing namespace std class string else 淺拷貝 也就是系統預設的拷貝,可寫可不寫。string const string s 預設的拷貝構造 深拷貝 string const string s string s2 s1 深賦值 str...

賦值 淺拷貝 深拷貝

堆是動態分配記憶體,記憶體大小不一 棧是自動分配相對固定大小的記憶體空間,並由系統自動釋放 基本資料型別值是不可變的,比較是值的比較 基本資料型別,傳值。開闢乙個新的記憶體空間 js 基本資料型別,儲存在 棧 中,記憶體可以及時 引用型別值是可變的,比較是引用的比較,看其引用是否指向同乙個物件 引用...

深拷貝 淺拷貝 賦值

賦值 class teacher class student student s1 new student student s2 s1 s1 s2,指向的記憶體區域相同 拷貝 class teacher class student implement cloneable student s1 new...