copy与deepcopy异同点

copy与deepcopy都是python中复制对象的方法

相同点:

1.都用于创建对象的副本

2.对于可变对象(列表、字典等):会创建副本而不是引用原对象

3.对于不可变对象(整数、字符串等):copy与deepcopy使用效果类似,因为没有子对象需要复制

不同点:

1.对嵌套对象的处理不同:copy只复制最外层对象,而不会递归地复制嵌套对象;deepcopy会递归地复制整个对象,包括所有嵌套的对象

2.引用对象:对于嵌套对象,copy可能会导致原始对象和复制对象共享相同的嵌套对象;而deepcopy会为嵌套对象创建全新的副本,确保原始对象与复制对象的嵌套对象不共享引用。

import copy

#浅复制
list = [1, [2, 3], [4, 5]]
shallow_copy = copy.copy(list)

#深复制
deep_copy = copy.deepcopy(list)

#修改原始对象中的嵌套列表
list[1][0] = 'X'

print(list)           #[1, ['X', 3], [4, 5]]
print(shallow_copy)   #[1, ['X', 3], [4, 5]]  (共享嵌套列表的引用)
print(deep_copy)      #[1, [2, 3], [4, 5]]    (独立的嵌套列表)