深淺拷貝異同主要體現(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變動