深拷貝 淺拷貝

2021-08-18 01:21:23 字數 925 閱讀 4245

直接賦值:其實就是物件的引用(別名)。

淺拷貝(copy):拷貝父物件,不會拷貝物件的內部的子物件。

深拷貝(deepcopy): copy 模組的 deepcopy 方法,完全拷貝了父物件及其子物件。

淺拷貝需要涉及到資料在記憶體中如何儲存,這部分可以看裡面有較為詳細的**講解,深淺拷貝的例子可以參照菜鳥教程這個坑等以後再來詳細填,沒怎麼用到暫時

淺拷貝,copy(),拷貝的是目標物件的指標位址

深拷貝,相當於完全複製了乙份內容,和源資料不再有任何聯絡,需要從copy模組匯入

謹以此文,紀念給煩躁於深淺拷貝的你我

s= [1,'hello','world']

#想複製乙份列表

#s1 = [1,'hello','world']

#s1[0]=2

# print(s)

# print(s1)

s2 = s.copy()#copy方法拷貝乙份和s列表一樣的列表

print(s2)

s2[0]=3 #拷貝後修改s2的值,s的值不會改變

print(s,s2)

l = [[1,2,3],23,34,45]

l1 = l.copy()

l1[0][1]=100

print(l)#得到的結果[[1, 100, 3], 23, 34, 45]

print(l1)#得到的結果[[1, 100, 3], 23, 34, 45]

import copy

l2 = copy.deepcopy(l)#得到的l2是乙份完全新的資料,和l沒有任何關係了

l2[0][1]=200

print(l2)#結果是[[1, 200, 3], 23, 34, 45]

print(l)#結果是[[1, 100, 3], 23, 34, 45]

淺拷貝 深拷貝

copy mutablecopy copy 不管是可變的,還是不可變的,結果都是不可變的 mutablecopy 不管是不可變的,還是可變的,結果都是可變的 nsmutablestring str nsmutablestring stringwithformat a nsarray arr1 str...

深拷貝 淺拷貝

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...

淺拷貝 深拷貝

retain是建立乙個指標,引用物件計數加1。copy屬性表示兩個物件內容相同,新的物件retain為1 與舊有物件的引用計數無關,舊有物件沒有變化。copy減少物件對上下文的依賴。retain屬性表示兩個物件位址相同 建立乙個指標,指標拷貝 內容當然相同,這個物件的retain值 1也就是說,re...