Sobes.tech
Junior — Middle

Kuo skiriasi giluminė ir paviršutinė objektų kopija Python'e ir kada ją naudoti?

sobes.tech AI

Atsakymas iš AI

Python'e, plona kopija (shallow copy) sukuria naują objektą, tačiau vidiniai objektai jame nėra kopijuojami, tik nuorodos į juos perduodamos. Gili kopija (deep copy) sukuria naują objektą ir rekursyviai kopijuoja visus vidinius objektus, sukurdama visiškai nepriklausomą struktūrą.

Kada naudoti:

  • Plona kopija tinkama, jei vidiniai objektai nebus keičiami arba jei vidinių objektų pakeitimai turi būti atspindėti abiejose kopijose.
  • Gili kopija būtina, kai reikalinga visiškai nepriklausoma objekto kopija su visais vidiniais elementais, kad pakeitimai kopijoje nepaveiktų originalo.

Pavyzdys:

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]] - originalas pasikeitė

deep[1][1] = 200
print(original)  # [[100, 2], [3, 4]] - originalas nesikeitė

Taigi, pasirinkimas tarp paviršutiniškos ir gilios kopijos priklauso nuo kopijos nepriklausomybės reikalavimų.