deepcopy
是Python中copy
模块提供的一个函数,用于实现对象的深度拷贝。深度拷贝与浅拷贝的主要区别在于对嵌套对象的处理。
- 浅拷贝(Shallow Copy):创建一个新的对象,然后将原始对象的元素(子对象)的引用复制到新对象中。这意味着新对象中的子对象仍然与原始对象中的子对象共享相同的引用。在浅拷贝中,原始对象和浅拷贝对象的第一层元素是独立的,但内部的子对象仍然共享。
- 深度拷贝(Deep Copy):创建一个完全独立的新对象,包括原始对象的所有子对象以及子对象的子对象,以此类推。深拷贝不共享任何引用,因此对原始对象或其子对象的修改都不会影响深拷贝对象。
import copy """深拷贝""" #B深拷贝A对象,修改B,此时只会修改B,A不会变,因为他们不是一个对象,是独立的两个对象。 original_list = [1, 2, [3, 4]] copied_list = copy.deepcopy(original_list) # 修改copied_list中的嵌套列表 copied_list[2][0] = 5 copied_list[2][0] = 6 # original_list中的嵌套列表并未被修改 print(original_list) # 输出: [1, 2, [3, 4]] print(copied_list) # 输出: [1, 2, [6, 4]] """浅拷贝""" #B浅拷贝A对象,修改B,也就相当于修改A,A与B永远一样,因为他们是一个对象。 original_list1 = [1, 2, [3, 4]] shallow_copied_list = copy.copy(original_list1) # 修改shallow_copied_list中的嵌套列表 shallow_copied_list[2][0] = 7 shallow_copied_list[2][0] = 8 # original_list中的嵌套列表也被修改了,因为浅拷贝只是复制了引用 print(original_list1) # 输出: [1, 2, [8, 4]] print(shallow_copied_list) # 输出: [1, 2, [8, 4]]