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]] - оригинал тағир наёфт

Интихоб байни нусхаи рӯи ва амиқ вобаста ба талаботи мустақилӣ мебошад.