Junior — Middle
Pythonдогу объектилердин үстүңкү көчүрмөсү эмне экенин жана ал терең көчүрмөдөн эмнеге айырмаланарын түшүндүрүңүз.
sobes.tech AI
AIден жооп
Pythonда беттик көчүрүү (shallow copy) жаңы объект түзөт, бирок анын ичинде жайгашкан объекттер көчүрүлбөйт, алардын шилтемелери көчүрүлөт. Башкача айтканда, эгер объекттин ичинде өзгөртүлүүчү ички структуралар (мисалы, тизмелер, сөздүктөр) болсо, алар оригинал жана көчүрмө ортосунда бөлүшүлөт.
Туура, терең көчүрүү (deep copy) жаңы объект түзөт жана бардык ички объекттерди рекурсивдүү көчүрөт, толук көз карандысыз көчүрмө түзүлөт.
Мисал:
import copy
original = [1, [2, 3]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[1].append(4)
print(original) # Натыйжа: [1, [2, 3, 4]] — ички тизмеде өзгөрүү болду
print(deep) # Натыйжа: [1, [2, 3]] — терең көчүрүү өзгөргөн жок
Ошондуктан, беттик көчүрүү, ички объекттер өзгөрбөсө ылайыктуу, ал эми терең көчүрүү — толук көз карандысыздык керек болсо колдонулат.