1. 程式人生 > >pyhton之淺拷貝(copy)和深拷貝(deepcopy)詳解,舉例說明

pyhton之淺拷貝(copy)和深拷貝(deepcopy)詳解,舉例說明

python copy deepcopy

a = [1, 2, [‘a‘, ‘b‘]]
a1 = a
b = copy.copy(a)
c = copy.deepcopy(a)
a.append(3)
a[2].append(‘c‘)
print(a)
print(a1)
print(b)
print(c)

結果:

a ----- [1, 2, [‘a‘, ‘b‘, ‘c‘], 3]
a1 ----- [1, 2, [‘a‘, ‘b‘, ‘c‘], 3]
b ----- [1, 2, [‘a‘, ‘b‘, ‘c‘]]
c ----- s[1, 2, [‘a‘, ‘b‘]]

print(id(a))
print(id(a1))
print(id(b))
print(id(c))

id(a) ---- 50472355
id(a1) ---- 5042355
id(b) ---- 8295968
id(c) ---- 50527608

結論:
1.copy()只是拷貝父對象的值,這裏也就是指1,2 但是子對象([‘a‘,‘b‘])指向同一個內存地址
2.deepcopy()是將父子對象的值全部復制一份,與原對象無任何關系

下面是子對象的內存地址

print(id(a[2]))
print(id(a1[2]))
print(id(b[2]))
print(id(c[2]))

id(a[2]) --- 8332992
id(a1[2]) --- 8332992
id(b[2]) --- 8332992

id(c[2]) --- 50770128

pyhton之淺拷貝(copy)和深拷貝(deepcopy)詳解,舉例說明