Sobes.tech
Back to questions
Junior — Middle
65

В чем разница между созданием полной копии объекта и копированием его ссылок на внутренние объекты?

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[1].append(5)
print(original)  # [1, [2, 3, 5], 4] - изменился вложенный список
print(shallow)   # [1, [2, 3, 5], 4]
print(deep)      # [1, [2, 3], 4] - глубокая копия не изменилась

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