举例讲解深复制与浅复制
时间: 2024-05-16 14:11:57 浏览: 6
假设有一个包含嵌套列表和字典的对象,我们可以通过以下方式进行复制:
```python
import copy
# 原对象
original = {
'name': 'Alice',
'age': 30,
'address': {
'city': 'Shanghai',
'country': 'China'
},
'hobbies': ['reading', 'traveling']
}
# 浅复制
shallow_copy = copy.copy(original)
# 深复制
deep_copy = copy.deepcopy(original)
```
浅复制只复制对象本身和其直接子对象的引用,因此对原对象的修改会影响到复制后的对象,例如:
```python
# 修改原对象
original['age'] = 31
original['address']['city'] = 'Beijing'
original['hobbies'].append('hiking')
# 输出浅复制和深复制后的对象
print(shallow_copy)
# {'name': 'Alice', 'age': 31, 'address': {'city': 'Beijing', 'country': 'China'}, 'hobbies': ['reading', 'traveling', 'hiking']}
print(deep_copy)
# {'name': 'Alice', 'age': 30, 'address': {'city': 'Shanghai', 'country': 'China'}, 'hobbies': ['reading', 'traveling']}
```
可以看到,浅复制后的对象的年龄和地址城市都被修改了,而深复制后的对象不受影响。
需要注意的是,深复制的效率比浅复制低,因为它需要递归地复制整个对象树。因此,在需要复制大型对象或嵌套层数较多的对象时,应该使用浅复制或其他更高效的复制方式。