Junior — Middle
Python'da obyektlarning chuqur nusxasi bilan sathiy nusxa o'rtasidagi farq nima va uni qachon ishlatish kerak?
sobes.tech AI
AIdan javob
Python'da, yuzaki nusxa (shallow copy) yangi obyekt yaratadi, ammo ich ichki obyektlari nusxa olinmaydi, faqat havola qilinadi. Chuqur nusxa (deep copy) esa yangi obyekt yaratadi va barcha ichki obyektlarni rekursiv ravishda nusxa oladi, to'liq mustaqil tuzilmani yaratadi.
Qachon foydalanish:
- Yuzaki nusxa agar ichki obyektlar o'zgarmasa yoki ichki obyektlardagi o'zgarishlar ikkala nusxada ham aks etishi kerak bo'lsa, mos keladi.
- Chuqur nusxa esa, obyektning to'liq mustaqil nusxasini olish uchun, nusxadagi o'zgarishlar aslga ta'sir qilmasligi uchun zarur.
Misol:
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]] - asl o'zgardi
deep[1][1] = 200
print(original) # [[100, 2], [3, 4]] - asl o'zgarmadi
Shunday qilib, yuzaki va chuqur nusxa olish tanlovi nusxaning mustaqillik talablariga bog'liq.