深浅拷贝的定义
深浅拷贝是Python中复制对象的两种方式,区别在于是否递归复制嵌套对象
浅拷贝Shallow Copy:创建新对象,仅复制原对象的引用,即新对象与原对象共享嵌套对象
(适合处理单层对象或嵌套不可变对象的场景,效率高)
深拷贝Deep Copy:创建新对象,递归复制原对象的所有内容(包括嵌套对象),新对象与原对象完全独立
(适合处理多层嵌套可变对象的场景,确保数据完全独立)
内存区别
举例 :
原对象为a = [1,[2,3] ]
浅拷贝b = a.copy() #共享内层列表的引用
深拷贝c = copy.deepcopy(a) #内层列表是新复制的
实现方式与示例
浅拷贝的实现方式
1.列表/字典的copy方法
2.切片(列表 [ : ] )
3.copy.copy()函数
深拷贝的实现方式
copy.deepcopy()函数
常见误区与注意事项
1.赋值(=)不是拷贝,前者只是创建引用,后者才是真正的复制
2.不可变对象无需深拷贝,因为它们本身不可变
3.自定义对象的拷贝:若自定义类需要支持深拷贝,需实现__deepcopy__方法(默认情况下,深拷贝会递归调用对象的__deepcopy__方法)