直接賦值:其實就是物件的引用(別名)。
淺拷貝(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...