Skip to content

Latest commit

 

History

History
98 lines (74 loc) · 4.06 KB

File metadata and controls

98 lines (74 loc) · 4.06 KB
title Модуль Python Copy - Шпаргалка по Python
description Модуль Copy представляет собой набор функций для копирования различных элементов списков, объектов, массивов и т.д. Он используется для создания как мелких (поверхностных), так и глубоких копий.
Модуль 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]]

Соответствующие ссылки

  • Шпаргалка: Основы ООП
  • Шпаргалка: Списки и Кортежи
  • Шпаргалка: Словари
  • Блог: Типы данных Python
  • object()
  • list()
  • dict()
  • slice()