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