深拷貝和淺拷貝

2021-10-23 07:00:05 字數 655 閱讀 5277

# 當乙個變數a=***的時候,約定為 這個a是指向了這個***

a = [11, 22]

# 完成淺拷貝copy.copy()

# 完成深拷貝copy.deepcopy()

import copy

a = [11, 22]

b = [33, 44]

c = [a, b]

d = c

e = copy.copy(c) # 淺拷貝 只拷貝c裡面的東西,c裡面的a和b指向的資料不拷貝

f = copy.deepcopy(c) # 深拷貝 拷貝c裡面的包括a,b指向的陣列

# copy拷貝元組 淺拷貝無法拷貝,僅僅是指向,因為元組是不可變型別

# 深拷貝:c = (a, b) 如果元組裡有指向的可變資料,這可以深拷貝(仍然無法淺拷貝)

print('c的值為:%s id為:%d' % (c, id(c)))

print('d的值為:%s id為:%d' % (d, id(d)))

print('e的值為:%s id為:%d' % (e, id(e)))

print(id(c))

print(id(c[0]))

print(id(e[0]))

print(id(f[0]))

深拷貝和淺拷貝

淺拷貝就是物件的資料成員之間的簡單賦值,如你設計了乙個沒有類而沒有提供它的複製建構函式,當用該類的乙個物件去給令乙個物件賦值時所執行的過程就是淺拷貝,如 class a a private int data int main 這一句b a 就是淺拷貝,執行完這句後b.data 5 如果物件中沒有其他...

淺拷貝和深拷貝

以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 例如 已知class a,class b void func a a void func a a func b b 此時函式對b的操作是呼叫拷貝建構函式後的臨時拷貝物件。多數傳指標 乙個物件以值傳遞的方式從函式返回 如 return b...

深拷貝和淺拷貝

ios提供了copy和mutablecopy方法,顧名思義,copy就是複製了乙個imutable的物件,而mutablecopy就是複製了乙個mutable的物件。以下將舉幾個例子來說明。1 系統的非容器類物件 這裡指的是nsstring nsnumber等等一類的物件。nsstring stri...