python copy与deepcopy区别
时间: 2023-12-11 15:52:24 浏览: 35
在Python中,`copy`和`deepcopy`都是用于复制对象的函数,但它们之间有一些区别。
`copy`是浅拷贝,它创建了一个新的对象,但是这个新对象仍然与原对象共享内部嵌套对象的引用。换句话说,新对象中的某些内部对象实际上是原对象中相同的对象。当你修改一个嵌套对象时,这个改变也会反映在其他拷贝中。
`deepcopy`是深拷贝,它创建了一个全新的对象,并且递归地复制原始对象及其所有嵌套对象。这意味着新对象与原对象以及其嵌套对象完全独立,对其中一个对象的任何改变都不会影响其他对象。
具体来说,`copy`只复制了原始对象的引用,而没有复制对象自身。而`deepcopy`创建了一个全新的对象,并且递归地复制所有嵌套对象。
下面是一个简单的示例来展示它们之间的区别:
```python
import copy
# 原始列表
original_list = [[1, 2, 3], [4, 5, 6]]
# 浅拷贝
shallow_copy = copy.copy(original_list)
# 深拷贝
deep_copy = copy.deepcopy(original_list)
# 修改原始列表的第一个元素
original_list = 10
print(original_list) # 输出: [[10, 2, 3], [4, 5, 6]]
print(shallow_copy) # 输出: [[10, 2, 3], [4, 5, 6]]
print(deep_copy) # 输出: [[1, 2, 3], [4, 5, 6]]
```
在上面的示例中,原始列表被修改后,浅拷贝和原始列表都发生了改变,而深拷贝保持了不变。这是因为浅拷贝只复制了嵌套列表的引用,而深拷贝创建了一个新的嵌套列表。