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.