Курс Python → Копирование объектов в Python
Модуль copy в Python предоставляет возможность создания копий объектов, что особенно полезно при работе с изменяемыми коллекциями или коллекциями, содержащими изменяемые элементы. При обычном присваивании объекта переменной создается лишь ссылка на этот объект, что может привести к нежелательным изменениям в оригинальном объекте. Для избежания подобных проблем используется копирование объектов с помощью модуля copy.
Существует два типа копирования объектов с использованием модуля copy: поверхностное и глубокое. Поверхностное копирование создает новый объект, но ссылается на те же объекты, что и оригинал. Глубокое копирование, в свою очередь, создает копию объекта, а также копии всех объектов, на которые он ссылается.
Для выполнения поверхностного копирования объектов используется функция copy.copy(), а для глубокого копирования — функция copy.deepcopy(). При глубоком копировании все объекты, на которые ссылается оригинал, также рекурсивно копируются, что обеспечивает полную изоляцию копии от оригинала.
import copy
original_list = [1, 2, [3, 4]]
shallow_copy = copy.copy(original_list)
deep_copy = copy.deepcopy(original_list)
original_list[2][0] = 5
print(original_list) # [1, 2, [5, 4]]
print(shallow_copy) # [1, 2, [5, 4]]
print(deep_copy) # [1, 2, [3, 4]]
В приведенном выше примере мы создаем оригинальный список original_list, затем создаем поверхностную копию shallow_copy и глубокую копию deep_copy. После изменения элемента вложенного списка в оригинальном списке, видим, что это изменение отразилось на поверхностной копии, но не на глубокой копии.
Другие уроки курса "Python"
- Создание даты из строки ISO
- Объединение строк с помощью метода join
- Закрытие файла в Python
- Декоратор Ajax required
- Блок try-except-else
- Проверка вхождения подстроки
- Создание вложенного генератора
- Переопределение оператора % для объектов
- Оператор in для Python
- Генераторы в Python
- Работа с буфером обмена на Python
- Python: цикл for и оператор присваивания
- Разбиение строки в Python
- Оператор распаковки в Python
- Повторение элементов списков
- Возврат нескольких значений
- Мониторинг памяти с Pympler
- Профилирование кода на Python
- Декодирование байтов в строку
- Бинарный поиск
- Генерация чисел с range()
- Создание циклической ссылки
- Стать Python-разработчиком
- Установка и использование howdoi
- Создание словарей с defaultdict()
- Математические функции в Python
- Метод join() для объединения элементов
- Основы работы со строками в Python
- Переопределение метода __lshift__
- Показ всплывающих окон Tkinter
- Умножение строк и списков
- Передача аргументов через **arguments
- Управление пакетами с pip
- Библиотека Rich: форматирование текста
- Многопроцессорное программирование в Python
- Логирование в Python
- Поиск простых чисел
- Удаление символа из строки
- Логирование с Loguru
- Добавление элемента к кортежу
- Получение срезов итераторов
- Хэш-функции в Python
- Атрибуты массивов в Numpy
- Python Enumerate
- Использование html-скриптов в Jupyter Notebook
- Логирование в Python















