Em python temos chamado “deep copy’ e ‘cópia superficial’, por exemplo:
import copyx = copy.copy(y) # shallow copy of yx = copy.deepcopy(y) # deep copy of y
A diferença entre superficial e profundo, a cópia só é relevante para objetos compostos (objetos que contêm outros objetos, como `lista`, `dict`, `set`, `tuple` e `bytearray` ou instâncias de classe).
– uma cópia rasa constrói um novo objeto composto e então (para a extensão possível de
) insere *os mesmos objetos* nele que o original
contém.,
– uma cópia profunda constrói um novo objeto composto e então, recursivamente,
insere *copia* nele dos objetos encontrados no original.
notas:
1. Em vez de “list”, “dict”, ” set ” e “bytearray”, ” copy.copy ‘é equivalente a’ list.entendido, dict.entendido.copy ‘ e ‘ bytearray.copy’, respectivamente.
isto é, todo o método de classe `copy` De `list`, `dict`, `set` e `bytearray` são cópias rasas.2. Cópia rasa é um algoritmo de complexidade` O (N)` onde `N` é o comprimento do objeto composto original., Cópia rasa precisa alocar pelo menos o tamanho de `N` de `PyBoject*` tipo na memória e loop para atribuir.3. Deep copy é um algoritmo de complexidade ‘O (NM) `onde` N `é o comprimento do objeto composto original, e` M’ é o comprimento médio (em termos de objetos não compostos) dos elementos do composto.4. A cópia rasa e profunda para objetos não compostos são os mesmos, por exemplo,` int`,` float`,` str ‘ etc.5. `lista.copy é o mesmo que usar slice, ou seja, ” a ”