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]] - оригинал тағир наёфт
Интихоб байни нусхаи рӯи ва амиқ вобаста ба талаботи мустақилӣ мебошад.