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