Назад к вопросам
Баланс-Платформа
Junior — Middle
74
Чем отличаются функции копирования shallow и deep в Python?
Компании, где спрашивали
Notamedia
Ответ от нейросети
sobes.tech AI
В Python функции копирования делятся на поверхностное (shallow) и глубокое (deep) копирование.
Поверхностное копирование (shallow copy) создает новый объект, но вложенные объекты внутри него не копируются, а лишь копируются ссылки на них. То есть, если внутри объекта есть изменяемые элементы (например, списки, словари), то изменения в них отразятся и в копии.
Глубокое копирование (deep copy) создает новый объект и рекурсивно копирует все вложенные объекты, таким образом копия полностью независима от оригинала.
Пример:
import copy
original = [1, [2, 3], 4]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[1].append(5)
print(original) # [1, [2, 3, 5], 4] - изменился вложенный список
print(shallow) # [1, [2, 3, 5], 4]
print(deep) # [1, [2, 3], 4] - глубокая копия не изменилась
Таким образом, shallow copy быстрее, но может привести к неожиданным изменениям вложенных объектов, deep copy безопаснее, но затратнее по ресурсам.