python中浅复制和深复制
时间: 2025-06-28 13:07:32 浏览: 11
### Python 中浅复制和深复制的区别
在 Python 编程中,对象的复制分为浅复制(shallow copy)和深复制(deep copy),两者的主要区别在于处理嵌套对象的方式不同。
#### 浅复制
浅复制创建一个新的复合对象,然后将原始对象中的元素引用插入到新对象中。这意味着对于不可变类型的元素,两个对象共享相同的实例;而对于可变类型的元素,则只复制最外层的对象引用,内部对象仍然指向同一内存位置[^1]。
```python
import copy
original_list = [[1, 2], [3, 4]]
shallow_copied_list = copy.copy(original_list)
print(shallow_copied_list) # 输出: [[1, 2], [3, 4]]
# 修改原列表的第一个子列表
original_list[0][0] = 'changed'
print(original_list) # 输出: [['changed', 2], [3, 4]]
print(shallow_copied_list) # 输出: [['changed', 2], [3, 4]] # 子列表受到影响
```
#### 深复制
相比之下,深复制不仅复制了外部容器本身,还递归地复制了所有嵌入其中的对象,从而使得源数据与目标数据之间没有任何依赖关系。因此,在修改任意一方的数据时,另一方保持不变[^3]。
```python
import copy
original_dict = {'numbers': [1, 2, 3]}
deep_copied_dict = copy.deepcopy(original_dict)
print(deep_copied_dict) # 输出: {'numbers': [1, 2, 3]}
# 修改原字典内的列表
original_dict['numbers'][0] = 'modified'
print(original_dict) # 输出: {'numbers': ['modified', 2, 3]}
print(deep_copied_dict) # 输出: {'numbers': [1, 2, 3]} # 不受原字典的影响
```
#### 使用场景
当只需要拷贝顶层结构而不关心底层内容是否一致时可以选择使用 `copy()` 方法来执行浅复制;如果希望得到一个完全独立于原有变量的新副本,则应该调用 `deepcopy()` 函数来进行深复制[^4]。
阅读全文
相关推荐

















