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ų.