Sobes.tech
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]] — խորքային պատճենը չի փոխվել

Այսպիսով, մակերեսային պատճենը հարմար է, երբ ներսի օբյեկտները չեն փոխվում, իսկ խորքային — երբ անհրաժեշտ է ամբողջական անկախություն պատճենից և սկզբնաղբյուրից։