Найти в Дзене

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

Копирование объектов в Python может быть поверхностным или глубоким. В Python есть два модуля, которые могут использоваться для копирования: copy и deepcopy. Модуль copy используется для поверхностного копирования, а модуль deepcopy - для глубокого копирования. Пример поверхностного копирования: Как мы видим изменились сразу два объекта, так как ссылки элементов идут на одну и ту же ячейку памяти. Пример глубокого копирования: В данном примере при внесении изменений обновился только второй list2, так как копии не связанны друг с другом.
Оглавление

Копирование объектов в Python может быть поверхностным или глубоким.

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

В Python есть два модуля, которые могут использоваться для копирования: copy и deepcopy. Модуль copy используется для поверхностного копирования, а модуль deepcopy - для глубокого копирования.

Пример поверхностного копирования:

Поверхностное копирование
Поверхностное копирование

Как мы видим изменились сразу два объекта, так как ссылки элементов идут на одну и ту же ячейку памяти.

Пример глубокого копирования:

Глубокое копирование
Глубокое копирование

В данном примере при внесении изменений обновился только второй list2, так как копии не связанны друг с другом.

-3