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