В чём разница между поверхностной копией и глубокой копией (`copy` и `deepcopy`)?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

import copy

original_list = [[1, 2], [3, 4]]
# Глубокая копия создаст новые вложенные списки
deep_copied_list = copy.deepcopy(original_list)

# Изменение вложенного списка в оригинале не повлияет на глубокую копию
original_list[0][0] = 99
# deep_copied_list останется [[1, 2], [3, 4]]

Сравнительная таблица с поверхностной копией (shallow copy):

Характеристика Поверхностная копия Глубокая копия
Создание объекта Новый составной объект Новый составной объект
Копирование содержимого Копирует ссылки на вложенные объекты Рекурсивно копирует вложенные объекты
Независимость Вложенные объекты общие Вложенные объекты полностью независимы
Изменение вложенных Может повлиять на оригинал Не влияет на оригинал

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее