В чем разница между copy() и deepcopy() ?
Спросят с вероятностью 7%
Функции
1️⃣
- Создает поверхностную копию объекта. Это означает, что копируется только сам объект и его первый уровень вложенных объектов, но не их вложенные объекты.
- Если вы измените вложенные объекты в исходном объекте, эти изменения будут отражены и в его копии, так как они оба будут ссылаться на одни и те же вложенные объекты.
- Используется, когда вам нужна поверхностная копия объекта, и вы уверены, что вложенные объекты не будут изменяться.
2️⃣
- Создает глубокую копию объекта. Это означает, что копируются как сам объект, так и все его вложенные объекты, рекурсивно, до тех пор, пока не будут скопированы все объекты внутри объекта.
- Глубокая копия полезна, когда вам нужно создать копию объекта, включая все его вложенные объекты, и вы не хотите, чтобы изменения в исходном объекте отражались на его копии и наоборот.
- Однако глубокие копии могут быть более затратными по памяти и времени, особенно если объект содержит много вложенных объектов.
Пример использования
В этом примере
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 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