Sobes.tech
Junior — Middle

Pythonда объекттердин терең көчүрмөсү менен үстүнкү көчүрмөсүнүн айырмасы эмнеде жана качан колдонуш керек?

sobes.tech AI

AIден жооп

Pythonда, жарым көчүрүү (shallow copy) жаңы объект түзөт, бирок анын ичинде жайгашкан объекттер көчүрүлбөйт, тескерисинче шилтемелер аркылуу берилет. Тамыр көчүрүү (deep copy) жаңы объект түзөт жана бардык жайгашкан объекттерди рекурсивдүү көчүрөт, толук көз карандысыз структура түзүү үчүн.

Кайсы учурда колдонуу:

  • Жарым көчүрүү ылайыктуу, эгер ички объекттер өзгөрбөсө же ички объекттердеги өзгөртүүлөр эки көчүрмөдө да көрүнүшү керек болсо.
  • Тамыр көчүрүү керек, эгер объекттин бардык ички элементтери менен толук көз карандысыз көчүрмө керек болсо, ошондо көчүрмөдөгү өзгөртүүлөр оригиналга таасир этпейт.

Мисал:

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]] - оригинал өзгөрдү

deep[1][1] = 200
print(original)  # [[100, 2], [3, 4]] - оригинал өзгөрбөдү

Ошентип, жарым жана терең көчүрмө ортосунда тандоо көчүрмөнүн көз карандысыздык талаптарына жараша болот.