Junior — Middle
Python'da ob'ektlarning yuzaki nusxasi nima ekanligini va u chuqur nusxadan qanday farq qilishini tushuntiring.
sobes.tech AI
AIdan javob
Python'da yuzeyiy nusxa (shallow copy) yangi obyekt yaratadi, ammo uning ichidagi ichki obyektlar nusxa olinmaydi, faqat ularga havolalar nusxa olinadi. Ya'ni, obyekt ichida o'zgartiriladigan ichki tuzilmalar (masalan, ro'yxatlar, lug'atlar) bo'lsa, ular asl va nusxa o'rtasida umumiy bo'ladi.
Chuqur nusxa (deep copy) esa yangi obyekt yaratadi va barcha ichki obyektlarni rekursiv ravishda nusxa oladi, to'liq mustaqil nusxa hosil qiladi.
Misol:
import copy
original = [1, [2, 3]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
shallow[1].append(4)
print(original) # Natija: [1, [2, 3, 4]] — ichki ro'yxat ham aslida o'zgardi
print(deep) # Natija: [1, [2, 3]] — chuqur nusxa o'zgarmadi
Shu sababli, yuzaki nusxa olish, ichki obyektlar o'zgarmasligi holatida mos keladi, chuqur nusxa esa nusxaning aslidan to'liq mustaqil bo'lishi kerak bo'lsa qo'llaniladi.