python的浅拷贝和深拷贝的区别
时间: 2024-09-30 08:14:27 浏览: 14
Python中的浅拷贝和深拷贝是对对象复制的不同方式,主要用于处理可变数据结构如列表、字典等,它们之间的区别在于:
1. **浅拷贝(Shallow Copy)**:
当对一个复杂的数据结构(比如列表或字典)做浅拷贝时,新的对象引用的是原对象的内存地址。这意味着,如果原对象的内容是可变对象(如另一个列表或字典),修改浅拷贝的对象会影响原对象。在Python中,可以使用`copy.copy()`或`[]`操作符来创建浅拷贝。
示例:
```python
import copy
original_list = [[1, 2], [3, 4]]
shallow_copy = copy.copy(original_list)
shallow_copy[0][0] = 'X'
print(original_list) # 输出:[['X', 2], [3, 4]]
```
2. **深拷贝(Deep Copy)**:
深拷贝会创建一个新的对象,并对该对象的所有内容都进行递归复制,包括嵌套的对象。这意味着对深拷贝的操作不会影响原对象。在Python中,可以使用`copy.deepcopy()`函数来进行深拷贝。
示例:
```python
from copy import deepcopy
original_list = [[1, 2], [3, 4]]
deep_copy = deepcopy(original_list)
deep_copy[0][0] = 'Y'
print(original_list) # 输出:[[1, 2], [3, 4]]
```
简而言之,浅拷贝只复制了对象的引用,而深拷贝则完全独立地复制了对象及其内容。