Junior — Middle
V čom spočíva rozdiel medzi hlbokou a plytkou kópiou objektov v Pythone a kedy ju použiť?
sobes.tech AI
Odpoveď od AI
V Pythone vytvára povrchovú kópiu (shallow copy) nový objekt, ale vnorené objekty v ňom nie sú kopírované, iba sa na ne odkazuje. Hlboká kópia (deep copy) vytvára nový objekt a rekurzívne kopíruje všetky vnorené objekty, čím vzniká úplne nezávislá štruktúra.
Kedy použiť:
- Povrchová kópia je vhodná, ak sa vnorené objekty nezmenia alebo ak zmeny vo vnorených objektoch majú byť reflektované v oboch kópiách.
- Hlboká kópia je potrebná, keď je požadovaná úplne nezávislá kópia objektu so všetkými vnorenými prvkami, aby zmeny v kópii neovplyvnili originál.
Príklad:
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]] - originál sa zmenil
deep[1][1] = 200
print(original) # [[100, 2], [3, 4]] - originál sa nezmenil
Výber medzi povrchovou a hlbokou kópiou závisí od požiadaviek na nezávislosť kópie.