Junior — Middle
Care este diferența dintre copierea profundă și superficială a obiectelor în Python și când ar trebui utilizată?
sobes.tech AI
Răspuns de la AI
În Python, o copie superficială (shallow copy) creează un nou obiect, dar obiectele imbricate din interiorul său nu sunt copiate, ci doar referențiate. O copie profundă (deep copy) creează un nou obiect și copiază recursiv toate obiectele imbricate, creând o structură complet independentă.
Când să folosiți:
- Copie superficială este potrivită dacă obiectele imbricate nu se vor modifica sau dacă modificările obiectelor imbricate trebuie să se reflecte în ambele copii.
- Copie profundă este necesară atunci când este nevoie de o copie complet independentă a obiectului cu toate elementele imbricate, astfel încât modificările în copie să nu afecteze originalul.
Exemplu:
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]] - originalul s-a schimbat
deep[1][1] = 200
print(original) # [[100, 2], [3, 4]] - originalul nu s-a schimbat
Prin urmare, alegerea între copiere superficială și profundă depinde de cerințele de independență ale copiei.