В чем разница между глубоким (deep copy) и поверхностным (shallow copy) копированием
Python
Middle
Без компании
В чем разница между глубоким (deep copy) и поверхностным (shallow copy) копированием
Ответы
Глубокое копирование создает полностью независимую копию объекта со всеми вложенными объектами, тогда как поверхностное копирует только первый уровень, оставляя вложенные объекты ссылками на оригинал.
Пример с `copy` модулем:
```
import copy
original = [[1, 2], [3, 4]]
shallow = copy.copy(original) # поверхностная копия
deep = copy.deepcopy(original) # глубокая копия
original[0][0] = 99
print(shallow) # [[99, 2], [3, 4]] - изменилось
print(deep) # [[1, 2], [3, 4]] - осталось без изменений
```
Ключевые моменты:
- Поверхностное копирование (`copy()`) подходит для неизменяемых или простых объектов
- Глубокое копирование (`deepcopy()`) нужно для сложных вложенных структур
- Для списков `[:]` и `list()` создают поверхностные копии
- Глубокое копирование медленнее и требует больше памяти