| title | Модуль Python Copy - Шпаргалка по Python |
|---|---|
| description | Модуль Copy представляет собой набор функций для копирования различных элементов списков, объектов, массивов и т.д. Он используется для создания как мелких (поверхностных), так и глубоких копий. |
Модуль Copy представляет собой набор функций, связанных с копированием различных элементов списка, объектов, массивов и т. д. Его можно использовать для создания как неглубоких (shallow), так и глубоких (deep) копий.
Из документации Python 3 здесь Операторы присваивания в Python не копируют объекты, они создают привязки между целью и объектом. Для изменяемых коллекций или коллекций, содержащих изменяемые элементы, иногда требуется копия, чтобы можно было изменять одну копию, не изменяя другую. Этот модуль предоставляет общие операции неглубокого (shallow) и глубокого (deep) копирования.Неглубокое копирование создает новый составной объект, а затем (насколько это возможно) вставляет в него ссылки на объекты, найденные в оригинале.
copy.copy(x) Возвращает неглубокую копию x.
import copy
a = [[1],[2],[3]]
# Создаем неглубокую копию (вложенные списки все еще ссылаются)
b = copy.copy(a)
a[[1], [2], [3]]
b[[1], [2], [3]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'copy' is not defined
Глубокое копирование создает новый составной объект, а затем рекурсивно вставляет в него копии объектов, найденных в оригинале.
copy.deepcopy(x[, memo]) Возвращает глубокую копию x.
import copy
a = [[1],[2],[3]]
# Создаем глубокую копию (полностью независимая копия)
b = copy.deepcopy(a)
# Изменяем оригинал
a[0][0] = 0
a[1] = None
a[[0], None, [3]]
b[[1], [2], [3]]
- Шпаргалка: Основы ООП
- Шпаргалка: Списки и Кортежи
- Шпаргалка: Словари
- Блог: Типы данных Python
- object()
- list()
- dict()
- slice()