Sobes.tech
Назад к вопросам
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 безопаснее, но затратнее по ресурсам.