Sobes.tech
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.