Duplicar objetos en Python: una guía completa
Crear copias de objetos es una tarea fundamental en la programación de Python, especialmente cuando se trata de datos complejos estructuras. Este artículo profundiza en las complejidades de la copia de objetos en Python, enfocándose particularmente en la creación de objetos independientes que no se ven afectados por los cambios realizados en el original.
Copia superficial y profunda
En Python, existen dos métodos principales para copiar objetos: copia superficial y copia profunda. La copia superficial crea un nuevo objeto que hace referencia a los mismos campos inmutables (por ejemplo, enteros, cadenas) que el original, pero crea nuevas copias de campos mutables (por ejemplo, listas, diccionarios).
Por ejemplo, considere lo siguiente fragmento de código:
original_list = [1, 2, 3]
new_list = original_list[:] # Shallow copy
Si bien new_list y original_list parecen ser objetos separados, cualquier cambio realizado en una lista se reflejará en la otra, ya que ambos hacen referencia a los mismos datos subyacentes.
Creación de objetos totalmente independientes
Para crear objetos verdaderamente independientes, debemos recurrir a la copia profunda. Esto implica crear una nueva copia de cada campo, incluidas las estructuras mutables anidadas. La función copy.deepcopy() de Python proporciona esta funcionalidad.
Modifiquemos nuestro ejemplo anterior:
import copy
original_list = [1, 2, [4, 5]]
new_list = copy.deepcopy(original_list)
Ahora, si hacemos un cambio en new_list, no afectará a original_list:
new_list[2].append(6)
print(original_list) # Output: [1, 2, [4, 5]]
print(new_list) # Output: [1, 2, [4, 5, 6]]
Conclusión
Al aprovechar la función copy.deepcopy(), los programadores Puede crear copias totalmente independientes de objetos, asegurando que los cambios realizados en uno no afecten al otro. Comprender la diferencia entre copia superficial y profunda es crucial para una manipulación eficaz de objetos en Python.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3