深淺拷貝的異同

深淺拷貝異同主要體現(xiàn)于可變對象上,對于tuple之類的不可變對面,深淺拷貝后,地址值和變量值都是一樣的,但是對與list之類的可變對象,深淺拷貝后,差異性很大

>>>import copy
>>>a = (1,2,3)
>>>b = a 
>>>c = copy.copy(a)
>>>d = copy.deepcopy(a)

>>>id(a)==id(b)==id(c)==id(d)
True


>>>a = [1,2,3,[4,4]]
>>>b = a 
>>>c = copy.copy(a)
>>>d = copy.deepcopy(a)

>>> a[3].append(4)
>>>a.append[5]

>>>a, b, c, d
[1,2,3,[4,4,4],5] #a
[1,2,3,[4,4,4],5] #b,  使用is拷貝,b的地址值和變量值一直保持和a一樣。ab指向同一塊內(nèi)存
[1,2,3,[4,4,4]]    #c    使用copy淺拷貝,a的某個元素內(nèi)部變化,c的相同索引位置的值也會變化, 不指向同一內(nèi)存
[1,2,3,[4,4]]        #d   使用deepcopy深拷貝,重新劃分一塊內(nèi)存給d,地址值改變,d不跟隨a變動

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容