Assignment vs. Shallow Copy vs. Deep Copy in Python (Português)


Shallow Copy

a shallow copy constructs a new compound object and then (to the extent possible) inserts references into it to the objects found in the original.

temos três maneiras diferentes para criar uma cópia superficial:

Aqui, todas as listas acima contêm os mesmos valores da lista original:

>>> print(nums == m1 == m2 == m3)
True

no Entanto, o endereço de memória de cada um é diferente.,

isso significa que desta vez, cada objeto da lista tem seu próprio endereço de memória independente.

agora passamos para a parte mais interessante. Se a lista original é um objeto composto (por exemplo, uma lista de listas), então depois de uma cópia rasa, novos elementos da lista ainda referenciam os elementos originais.

assim, se você modificar os elementos mutáveis como listas, as alterações serão refletidas nos elementos originais., Vejamos o exemplo abaixo para entender melhor:

Como você pode ver no exemplo acima, enquanto estamos modificando a lista interna de elementos na nova lista, que é atualizada na lista original também, porque a e b ainda apontar para o mesmo endereço de memória (lista original).

Assim, a nova lista b tem o seu próprio endereço de memória, mas seus elementos não., Isto é porque, em cópia rasa, em vez de copiar os elementos da lista para o novo objeto, ele simplesmente copia as referências para seus endereços de memória.

portanto, enquanto estamos fazendo mudanças no objeto original, ele é refletido nos objetos copiados e vice-versa.

Esta é uma característica de uma cópia rasa.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Ir para a barra de ferramentas