浅拷贝:浅拷贝是指复制对象时只复制了对象本身及其属性的引用,而不是属性本身。也就是说,新对象与原对象共享同一个属性,当修改属性时,两个对象都会发生变化。

例如:

# 浅拷贝示例
a = [1, 2, [3, 4]]
b = a.copy()
b[2].append(5)
print(a)    # [1, 2, [3, 4, 5]]
print(b)    # [1, 2, [3, 4, 5]]

在这个示例中,我们使用列表的 copy() 方法进行浅拷贝,然后修改了新列表 b 中的第三个元素。由于原列表 a 和新列表 b 共享同一个子列表 [3, 4] 的引用,因此修改 b 中的子列表会同时对 a 产生影响。

深拷贝:深拷贝是指复制对象时不仅复制对象本身,还会递归复制对象的所有属性,直到所有属性都是基本类型或不可变类型为止。即使原对象的属性发生了变化,新对象的属性也不会受到影响。

例如:

# 深拷贝示例
import copy

a = [1, 2, [3, 4]]
b = copy.deepcopy(a)
b[2].append(5)
print(a)    # [1, 2, [3, 4]]
print(b)    # [1, 2, [3, 4, 5]]

在这个示例中,我们使用 copy 模块的 deepcopy() 方法进行深拷贝,然后修改了新列表 b 中的第三个元素。由于 b 是一个完全独立的新对象,它的所有属性都是复制自原对象,因此修改 b 中的子列表不会影响原对象 a

总之,浅拷贝和深拷贝都是复制对象的方法,但它们的复制方式不同。在实际编程中,我们需要根据情况选择合适的复制方式,以确保程序的正确性和效率

讲解一下浅拷贝和深拷贝

原文地址: https://www.cveoy.top/t/topic/cnsR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录