对于不可变类型对象,深拷贝和浅拷贝的地址值和原对象相同,不会开辟新的内存空间。
a = (1,2,3)
b = copy.copy(a)
c = copy.deepcopy(a)
print(id(a))
print(id(b))
print(id(c))
4552886240
4552886240
4552886240
对于可变类型对象,深拷贝和浅拷贝的地址值和原对象不同,都会开辟新的内存空间
a = [1,2,3]
b = copy.copy(a)
c = copy.deepcopy(a)
print(id(a))
print(id(b))
print(id(c))
4307401992
4307400776
4307632584
那么深拷贝和浅拷贝的区别在哪里呢?对于多层嵌套类型的对象:
a1 = [4,5]
a = [1,2,3,a1]
b = copy.copy(a)
c = copy.deepcopy(a)
a1.append(6)
print(a)
print(b)
print(c)
print(id(a))
print(id(b))
print(id(c))
[1, 2, 3, [4, 5, 6]]
[1, 2, 3, [4, 5, 6]]
[1, 2, 3, [4, 5]]
4386818632
4387046024
4387046088