Sobes.tech
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.