Sobes.tech
Junior — Middle

Koja je razlika između duboke i plitke kopije objekata u Pythonu i kada je treba koristiti?

sobes.tech АИ

Одговор од АИ

U Python-u, površno kopiranje (shallow copy) kreira novi objekat, ali unutrašnji objekti unutar njega se ne kopiraju, već se samo referenciraju. Duboko kopiranje (deep copy) kreira novi objekat i rekurzivno kopira sve unutrašnje objekte, stvarajući potpuno nezavisnu strukturu.

Kada koristiti:

  • Površno kopiranje je pogodno ako unutrašnji objekti neće biti menjani ili ako promene u unutrašnjim objektima treba da se odraze u obe kopije.
  • Duboko kopiranje je potrebno kada je potrebna potpuno nezavisna kopija objekta sa svim unutrašnjim elementima, tako da promene u kopiji ne utiču na original.

Primer:

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]] - original se promenio

deep[1][1] = 200
print(original)  # [[100, 2], [3, 4]] - original se nije promenio

Izbor između površnog i dubokog kopiranja zavisi od zahteva za nezavisnošću kopije.