В чем разница между copy() и deepcopy() ?

Спросят с вероятностью 7%



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



1️⃣ copy():

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

- Если вы измените вложенные объекты в исходном объекте, эти изменения будут отражены и в его копии, так как они оба будут ссылаться на одни и те же вложенные объекты.

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



2️⃣ deepcopy():

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

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

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



Пример использования copy() и deepcopy():

import copy



original_list = [1, [2, 3], 4]



shallow_copy = copy.copy(original_list)

deep_copy = copy.deepcopy(original_list)



original_list[1][0] = 5 # Изменение вложенного списка



print(original_list) # Вывод: [1, [5, 3], 4]

print(shallow_copy) # Вывод: [1, [5, 3], 4]

print(deep_copy) # Вывод: [1, [2, 3], 4]




В этом примере shallow_copy является поверхностной копией original_list, а deep_copy — глубокой копией. При изменении вложенного списка в original_list это отражается на shallow_copy, но не на deep_copy.



➡️ Примеры ответов

➡️ Список всех вопросов на Python Developer



🧩 Идущий | 🔐 Собесы | 🔐 Тестовые