| title | Módulo Copy do Python - Folha de Dicas Python |
|---|---|
| description | O Módulo Copy oferece funções para copiar diversos elementos como listas, objetos e arrays. Permite criar cópias rasas (shallow) e cópias profundas (deep). |
O Módulo Copy é um conjunto de funções relacionadas à cópia de diferentes elementos de uma lista, objetos, arrays, etc. Pode ser usado para criar cópias rasas (shallow copies) bem como cópias profundas (deep copies).
Da documentação do Python 3 documentação As instruções de atribuição em Python não copiam objetos, elas criam ligações entre um alvo e um objeto. Para coleções que são mutáveis ou contêm itens mutáveis, uma cópia é às vezes necessária para que se possa alterar uma cópia sem alterar a outra. Este módulo fornece operações genéricas de cópia rasa (shallow) e profunda (deep).A cópia rasa constrói um novo objeto composto e então (na medida do possível) insere referências nele aos objetos encontrados no original.
copy.copy(x) Retorna uma cópia rasa de x.
import copy
a = [[1],[2],[3]]
# Cria cópia rasa (listas aninhadas ainda são referenciadas)
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
Uma cópia profunda constrói um novo objeto composto e então, recursivamente, insere cópias nele dos objetos encontrados no original.
copy.deepcopy(x[, memo]) Retorna uma cópia profunda de x.
import copy
a = [[1],[2],[3]]
# Cria cópia profunda (cópia completamente independente)
b = copy.deepcopy(a)
# Modifica o original
a[0][0] = 0
a[1] = None
a[[0], None, [3]]
b[[1], [2], [3]]
- Cheatsheet: Noções Básicas de OOP
- Cheatsheet: Listas e Tuplas
- Cheatsheet: Dicionários
- Blog: Tipos de Dados do Python
- object()
- list()
- dict()
- slice()