可变对象:list dict set
简单对象
import copy
t = [1, 2, 3, 4]
t1 = t
c1 = copy.copy(t)
c2 = copy.deepcopy(t)
print(id(t),id(t1), id(c1), id(c2))
#1200892231176 1200892231176 1200892222728 1200892222728
复杂对象(嵌套结构)
import copy
t = [1, 2, 3, 4,[1,2,3]]
t1 = t
c1 = copy.copy(t)
c2 = copy.deepcopy(t)
print(id(t),id(t1), id(c1), id(c2))
print(id(t[4]),id(t1[4]), id(c1[4]), id(c2[4]))
#2294743052360 2294743052360 2294591873800 2294585876552
#2294743065096 2294743065096 2294743065096 2294742993672
区别在于浅拷贝的子结构指向原数据地址。
结构图
不可变对象:tuple string int float bool
import copy
t = (1, 2, 3, 4)
t1 = t
c1 = copy.copy(t)
c2 = copy.deepcopy(t)
print(id(t1), id(c1), id(c2))
#1812694403576 1812694403576 1812694403576