Поверхностная VS Глубокая копии

В Python есть две основные функции для создания копий объектов: copy и deepcopy, и их отличие заключается в том, насколько глубоко они копируют вложенные объекты:

  1. copy.copy() (поверхностное копирование):
  • Создает новый объект, который является поверхностной копией исходного объекта.
  • Если исходный объект содержит вложенные объекты (например, список в списке), то copy.copy() создаст новые объекты только для верхнего уровня вложенности, но оставит ссылки на оригинальные вложенные объекты.
  • Изменения во вложенных объектах будут видны как в копии, так и в оригинале для тех объектов, на которые ссылаются ссылки.
  1. copy.deepcopy() (глубокое копирование)
  • :Создает новый объект, который является глубокой копией исходного объекта.
  • Рекурсивно копирует все вложенные объекты, включая объекты в объектах и так далее, создавая полностью независимую копию исходной структуры данных.
  • Изменения в глубокой копии не влияют на оригинальные объекты и наоборот.
Поверхностная VS Глубокая копии, image #1

Таким образом, copy.copy() создает поверхностную копию с общими вложенными объектами, в то время как copy.deepcopy() создает глубокую копию с полностью независимыми вложенными объектами.

22 views·1 share