Разница между shallow и deep copy
Python
Middle
Сбербанк
Объясните разницу между поверхностным (shallow) и глубоким (deep) копированием объектов в Python. Приведите пример, когда поверхностной копии недостаточно.
Ответы
shallow vs deep copy
shallow copy (поверхностная копия):
- создаётся новый контейнер, но вложенные объекты не копируются, а переиспользуются.
deep copy (глубокая копия):
- копируются рекурсивно все вложенные объекты.
Пример:
```python
import copy
lst = [[1, 2], [3, 4]]
sh = copy.copy(lst)
dp = copy.deepcopy(lst)
lst[0].append(99)
print(sh) # [[1, 2, 99], [3, 4]]
print(dp) # [[1, 2], [3, 4]]
```
Поверхностной копии недостаточно, когда вы хотите полностью изолировать копию от изменений во вложенных структурах.