Python深浅拷贝的区别

在 Python 中,深拷贝和浅拷贝是两个常用的操作。

浅拷贝是指创建一个新对象,这个新对象有着原始对象的一些属性值,但是它不会复制原始对象中引用的对象。也就是说,在浅拷贝中,新对象只是原始对象的一个副本,如果原始对象包含了可变的对象(如列表、字典等),那么新对象中的这些可变对象也将被原始对象和新对象所共享。

深拷贝是指创建一个新对象,这个新对象有着原始对象的所有属性值,而且它会递归地复制原始对象中引用的所有对象。也就是说,在深拷贝中,整个对象树都会被复制到一个新的对象中,即使原始对象中包含了可变的对象,也不会共享。

在 Python 中,可以使用 copy 模块来进行深浅拷贝操作。具体使用方式如下:

浅拷贝:

import copy

# 创建一个列表
lst1 = [1, 2, [3, 4]]

# 浅拷贝列表
lst2 = copy.copy(lst1)

# 修改原始列表中嵌套的列表元素
lst1[2][0] = 5

# 打印结果
print(lst1)  # 输出:[1, 2, [5, 4]]
print(lst2)  # 输出:[1, 2, [5, 4]]

从上面的代码可以看出,当我们修改原始列表中嵌套的列表元素时,浅拷贝的列表也发生了相应的改变。

深拷贝:

import copy

# 创建一个列表
lst1 = [1, 2, [3, 4]]

# 浅拷贝列表
lst2 = copy.copy(lst1)

# 修改原始列表中嵌套的列表元素
lst1[2][0] = 5

# 打印结果
print(lst1)  # 输出:[1, 2, [5, 4]]
print(lst2)  # 输出:[1, 2, [5, 4]]

从上面的代码可以看出,当我们修改原始列表中嵌套的列表元素时,深拷贝的列表并没有发生相应的改变。

你可能感兴趣的:(python)