Junior — Middle
Vysvetlite, čo je povrchné kopírovanie objektov v Pythone a ako sa líši od hlbokého kopírovania.
sobes.tech AI
Odpoveď od AI
Povrchové kopírovanie (shallow copy) v Pythone vytvorí nový objekt, ale vnorené objekty v ňom nie sú kopírované, iba sa kopírujú odkazy na ne. To znamená, že ak vo vnútri objektu sú modifikovateľné vnorené štruktúry (napríklad zoznamy, slovníky), budú zdieľané medzi originálom a kópiou.
Hlboké kopírovanie (deep copy) vytvorí nový objekt a rekurzívne skopíruje všetky vnorené objekty, čím vznikne úplne nezávislá kópia.
Príklad:
import copy
original = [1, [2, 3]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[1].append(4)
print(original) # Vypíše: [1, [2, 3, 4]] — vnorený zoznam sa zmenil aj v origináli
print(deep) # Vypíše: [1, [2, 3]] — hlboká kópia sa nezmenila
Preto je povrchové kopírovanie vhodné, keď sa vnorené objekty nemenia, a hlboké — keď je potrebná úplná nezávislosť kópie od originálu.