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.