Sobes.tech
Junior — Middle

Spiega cos'è la copia superficiale di oggetti in Python e come si differenzia dalla copia profonda.

sobes.tech AI

Risposta dell'AI

La copia superficiale (shallow copy) in Python crea un nuovo oggetto, ma gli oggetti annidati al suo interno non vengono copiati, vengono semplicemente copiate le referenze a essi. Cioè, se all’interno dell’oggetto ci sono strutture mutabili annidate (ad esempio, liste, dizionari), queste saranno condivise tra l’originale e la copia.

La copia profonda (deep copy) crea un nuovo oggetto e copia ricorsivamente tutti gli oggetti annidati, creando una copia completamente indipendente.

Esempio:

import copy

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

shallow[1].append(4)
print(original)  # Mostrerà: [1, [2, 3, 4]] — la lista annidata è cambiata anche nell’originale
print(deep)      # Mostrerà: [1, [2, 3]] — la copia profonda non è cambiata

Pertanto, la copia superficiale è adatta quando gli oggetti annidati non cambiano, mentre la copia profonda è necessaria quando si desidera un’indipendenza totale della copia dall’originale.