Sobes.tech
Junior — Middle

¿En qué se diferencia la copia profunda de objetos en Python de la copia superficial, y cuándo debería usarse?

sobes.tech AI

Respuesta de la IA

En Python, la copia superficial (shallow copy) crea un nuevo objeto, pero los objetos anidados dentro de él no se copian, sino que simplemente se pasan por referencia. La copia profunda (deep copy) crea un nuevo objeto y copia recursivamente todos los objetos anidados, creando una estructura completamente independiente.

Cuándo usar:

  • La copia superficial es adecuada si los objetos anidados no cambiarán o si los cambios en los objetos anidados deben reflejarse en ambas copias.
  • La copia profunda es necesaria cuando se requiere una copia completamente independiente del objeto con todos sus elementos anidados, para que los cambios en la copia no afecten al original.

Ejemplo:

import copy

original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)

shallow[0][0] = 100
print(original)  # [[100, 2], [3, 4]] - el original cambió

deep[1][1] = 200
print(original)  # [[100, 2], [3, 4]] - el original no cambió

Por lo tanto, la elección entre copia superficial y profunda depende de los requisitos de independencia de la copia.