深拷贝

可变数据类型

使用deepcopy函数:只要发现拷贝对象有可变类型就会对该对象到最后一个可变类型的每一层对象进行拷贝,对每一层拷贝的对象都会开辟新的内存空间进行存储。

import copy

# 深拷贝可变类型
a = [1, 2, 3]
b = [11, 22, 33]
c = [a, b]

d = copy.deepcopy(c)

print(id(c)) # 1666732970560
print(id(d)) # 1666732926720

# 深拷贝深层数据
print(id(a)) # 2715151528960
print(id(c[0])) # 2715151528960
print(id(d[0])) # 2715151509632

不可变数据类型

不会给拷贝对象开辟新的内存空间,而只是拷贝了对象的引用。

# 深拷贝不可变数据类型
a = (1, 2, 3)
b = (11, 22, 33)
c = (a, b)

d = copy.deepcopy(c)

print(id(a)) # 2581979447104
print(id(c[0])) # 2581979447104
print(id(d[0])) # 2581979447104