Sobes.tech
Junior — Middle

V čem spočívá rozdíl mezi hlubokou a mělkou kopií objektů v Pythonu a kdy ji použít?

sobes.tech AI

Odpověď od AI

V Pythonu vytvoří povrchová kopie (shallow copy) nový objekt, ale vnořené objekty uvnitř něj nejsou kopírovány, pouze jsou na ně odkazovány. Hluboká kopie (deep copy) vytvoří nový objekt a rekurzivně zkopíruje všechny vnořené objekty, čímž vznikne plně nezávislá struktura.

Kdy použít:

  • Povrchová kopie je vhodná, pokud se vnořené objekty nezmění nebo pokud změny ve vnořených objektech mají být reflektovány v obou kopiích.
  • Hluboká kopie je nutná, když je potřeba úplně nezávislá kopie objektu se všemi vnořenými prvky, aby změny v kopii neovlivnily originál.

Pří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 se změnil

deep[1][1] = 200
print(original)  # [[100, 2], [3, 4]] - originál se nezměnil

Volba mezi povrchovou a hlubokou kopií závisí na požadavcích na nezávislost kopie.