from copy import copy, deepcopy
# 当a为可变数据类型时
a = [1, 2, [5, 6, 7], 4]
赋值
b = a
print(a) # [1, 2, [5, 6, 7], 4]
print(b) # [1, 2, [5, 6, 7], 4]
print(id(a)) # 4428920328
print(id(b)) # 4428920328
a[0] = 100
print(a) # [100, 2, [5, 6, 7], 4]
print(b) # [100, 2, [5, 6, 7], 4]
print(id(a)) # 4428920328
print(id(b)) # 4428920328
a[2][0] = 100
print(a) # [100, 2, [100, 6, 7], 4]
print(b) # [100, 2, [100, 6, 7], 4]
print(id(a)) # 4428920328
print(id(b)) # 4428920328
copy()
c = copy(a)
print(a) # [1, 2, [5, 6, 7], 4]
print(c) # [1, 2, [5, 6, 7], 4]
print(id(a)) # 4403467784
print(id(c)) # 4403504712
# 不改变复杂子对象的值
a[0] = 222
print(a) # [222, 2, [5, 6, 7], 4]
print(c) # [1, 2, [5, 6, 7], 4]
print(id(a)) # 4403467784
print(id(c)) # 4403504712
# 改变复杂子对象的值
a[2][0] = 333
print(a) # [222, 2, [333, 6, 7], 4]
print(c) # [1, 2, [333, 6, 7], 4]
print(id(a)) # 4403467784
print(id(c)) # 4403504712
deepcopy()
d = deepcopy(a)
print(a) # [1, 2, [5, 6, 7], 4]
print(d) # [1, 2, [5, 6, 7], 4]
print(id(a)) # 4413752840
print(id(d)) # 4413789768
# 不改变复杂子对象的值
a[0] = 100
print(a) # [100, 2, [5, 6, 7], 4]
print(d) # [1, 2, [5, 6, 7], 4]
print(id(a)) # 4413752840
print(id(d)) # 4413789768
# 改变复杂子对象的值
a[2][0] = 200
print(a) # [100, 2, [200, 6, 7], 4]
print(d) # [1, 2, [5, 6, 7], 4]
print(id(a)) # 4413752840
print(id(d)) # 4413789768