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]] — խորքային պատճենը չի փոխվել
Այսպիսով, մակերեսային պատճենը հարմար է, երբ ներսի օբյեկտները չեն փոխվում, իսկ խորքային — երբ անհրաժեշտ է ամբողջական անկախություն պատճենից և սկզբնաղբյուրից։