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