Copia superficial: la repetición superficial es más rápida. Sin embargo, es «perezoso» porque maneja punteros y referencias. En lugar de crear una copia contemporánea del conocimiento particular al que apunta el puntero, simplemente copia sobre el precio del puntero. Entonces, tanto el primero como la copia pueden tener punteros que hacen referencia al conocimiento subyacente constante.
Copia profunda: la repetición profunda realmente clona los datos subyacentes. No se comparte entre el primero y por lo tanto la copia.
A continuación se muestra la diferencia tabular entre la copia superficial y la copia profunda:
Copia superficial | Copia profunda |
---|---|
Shallow Copy almacena las referencias de los objetos a la dirección de memoria original. | La copia profunda almacena copias del valor del objeto. |
Copia superficial refleja los cambios realizados en el objeto nuevo/copiado en el objeto original. | La copia profunda no refleja los cambios realizados en el objeto nuevo/copiado en el objeto original. |
Shallow Copy almacena la copia del objeto original y señala las referencias a los objetos. | La copia profunda almacena la copia del objeto original y también copia recursivamente los objetos. |
La copia superficial es más rápida. | La copia profunda es comparativamente más lenta. |
A continuación se muestra el programa para explicar la copia superficial y profunda de la clase.
Python3
# Python3 implementation of the Deep # copy and Shallow Copy from copy import copy, deepcopy # Class of Car class Car: def __init__(self, name, colors): self.name = name self.colors = colors honda = Car("Honda", ["Red", "Blue"]) # Deepcopy of Honda deepcopy_honda = deepcopy(honda) deepcopy_honda.colors.append("Green") print(deepcopy_honda.colors, \ honda.colors) # Shallow Copy of Honda copy_honda = copy(honda) copy_honda.colors.append("Green") print(copy_honda.colors, \ honda.colors)
['Red', 'Blue', 'Green'] ['Red', 'Blue'] ['Red', 'Blue', 'Green'] ['Red', 'Blue', 'Green']
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA