Junior
Kokius objektų kopijavimo metodus žinote?
sobes.tech AI
Atsakymas iš AI
Paviršinis ir gilus kopijavimas.
Paviršinis kopijavimas (Shallow Copy) sukuria naują objektą, tačiau nuorodos į įdėtus objektus lieka tos pačios. Pakeitimai įdėtuose originalo objektuose atsispindės ir kopijoje, ir atvirkščiai.
Gilus kopijavimas (Deep Copy) sukuria visiškai nepriklausomą objekto kopiją, įskaitant visų įdėtų objektų kopijas. Pakeitimai įdėtuose originalo objektuose neturės įtakos kopijai.
Python pavyzdžiai:
# Paviršutinis kopijavimas
import copy
original_list = [1, 2, [3, 4]]
shallow_copy_list = copy.copy(original_list)
# Pakeitimai įdėtuose objektuose originale paveiks kopiją
original_list[2][0] = 99
# shallow_copy_list dabar yra [1, 2, [99, 4]]
# Gilus kopijavimas
import copy
original_list = [1, 2, [3, 4]]
deep_copy_list = copy.deepcopy(original_list)
# Pakeitimai įdėtuose objektuose originale neįtakos kopijos
original_list[2][0] = 99
# deep_copy_list lieka [1, 2, [3, 4]]
Metodą pasirinkti priklauso nuo objekto struktūros ir užduoties. Paprastiems objektams be įdėtų nuorodų pakanka paviršutinis kopijavimas. Sudėtingesniems objektams arba kai reikalinga visiška kopijos nepriklausomybė nuo originalo, naudojamas gilus kopijavimas.