Sobes.tech
Back to questions
Junior — Middle
78

Чем отличается глубокое копирование объектов в Python от поверхностного, и когда его следует использовать?

Companies where asked
Золотое ЯблокоЗолотое Яблоко

Answer from AI

sobes.tech AI

В Python поверхностное копирование (shallow copy) создает новый объект, но вложенные объекты внутри него не копируются, а просто передаются по ссылке. Глубокое копирование (deep copy) создает новый объект и рекурсивно копирует все вложенные объекты, создавая полностью независимую структуру.

Когда использовать:

  • Поверхностное копирование подходит, если вложенные объекты не будут изменяться или если изменения вложенных объектов должны отражаться в обеих копиях.
  • Глубокое копирование необходимо, когда требуется полностью независимая копия объекта со всеми вложенными элементами, чтобы изменения в копии не влияли на оригинал.

Пример:

import copy

original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)

shallow[0][0] = 100
print(original)  # [[100, 2], [3, 4]] - изменился оригинал

deep[1][1] = 200
print(original)  # [[100, 2], [3, 4]] - оригинал не изменился

Таким образом, выбор между поверхностным и глубоким копированием зависит от требований к независимости копии.