Junior — Middle
Vysvětlete, co je to povrchní kopírování objektů v Pythonu a čím se liší od hlubokého kopírování.
sobes.tech AI
Odpověď od AI
Povrchová kopie (shallow copy) v Pythonu vytvoří nový objekt, ale vnořené objekty uvnitř něj nejsou kopírovány, pouze jsou kopírovány odkazy na ně. To znamená, že pokud uvnitř objektu jsou modifikovatelné vnořené struktury (například seznamy, slovníky), budou sdíleny mezi originálem a kopií.
Hluboká kopie (deep copy) vytvoří nový objekt a rekurzivně zkopíruje všechny vnořené objekty, čímž vznikne plně nezávislá kopie.
Pří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]] — vnořený seznam se změnil i v originálu
print(deep) # Vypíše: [1, [2, 3]] — hluboká kopie se nezměnila
Proto je povrchová kopie vhodná, když se vnořené objekty nemění, a hluboká — když je potřeba úplná nezávislost kopie na originálu.