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