ExpertiDict

Python · Intermediário · Português · Técnico

cópia rasa e profunda

/ˈkɔpjɐ ˈhazɐ i pɾoˈfũdɐ/substantivo

A cópia rasa duplica só o contêiner externo e reaproveita os objetos internos; a profunda, via copy.deepcopy, duplica tudo recursivamente e gera estruturas independentes.

Onde usar

Aparece quando alterar a cópia de uma lista de listas muda o original. Em code review, pergunta-se se list(x) ou x[:] bastam ou se é preciso deepcopy.

Em código

import copy
orig = [[1], [2]]
rasa = orig.copy()
prof = copy.deepcopy(orig)
rasa[0].append(9)
print(orig)  # [[1, 9], [2]]
print(prof)  # [[1], [2]]

Exemplos

Foi cópia rasa: a lista de dentro continuou compartilhada.

Pra isolar de verdade, faz uma cópia profunda com deepcopy.

Cuidado

Não presuma que lista.copy() isola objetos aninhados: só a camada de fora é nova.

Sinônimos

shallow e deep copy

Veja também

Todos os termos de Python