56 / 59

Python Asserts

Assertion nima?

Assertionlar — dasturingizda bir haqiqatni ishonch bilan tasdiqlaydigan yoki bayon qiladigan operatorlar. Masalan, bo'lish funksiyasini yozayotganda, siz bo'luvchi nolga teng bo'lmasligi kerakligiga ishonchingiz komil, siz bo'luvchi nolga teng emasligini tasdiqlaysiz (assert).

Assertionlar — shunchaki shartlar to'g'ri (true) qaytarishini yoki qaytarmasligini tekshiruvchi mantiqiy (boolean) ifodalar. Agar u to'g'ri bo'lsa, dastur hech narsa qilmaydi va kodning keyingi qatoriga o'tadi. Biroq, agar u noto'g'ri bo'lsa, dastur to'xtaydi va xatolik tashlaydi.

Bu shuningdek sozlash (debugging) vositasi hamdir, chunki u xatolik yuz berishi bilanoq dasturni to'xtatadi va uni ko'rsatadi.

Quyidagi blok-sxemaga qarab buni aniqroq tushunishimiz mumkin:

Python assert operatori

Python Assert blok-sxemasi

Pythonda dasturda assertion shartidan foydalanish uchun tayyor assert operatori bor. assert operatori har doim to'g'ri bo'lishi kerak bo'lgan shart yoki ifodaga ega. Agar shart noto'g'ri bo'lsa, assert dasturni to'xtatadi va AssertionError beradi.

Pythonda Assert'dan foydalanish sintaksisi:

kod
assert <shart>
assert <shart>,<xato xabari>

Pythonda assert operatoridan yuqorida aytib o'tilganidek ikki xil usulda foydalanishimiz mumkin.

  • assert operatori shartga ega va agar shart qanoatlantirilmasa, dastur to'xtaydi va AssertionError beradi.
  • assert operatori shuningdek shart va ixtiyoriy xato xabariga ham ega bo'lishi mumkin. Agar shart qanoatlantirilmasa, assert dasturni to'xtatadi va xato xabari bilan birga AssertionError beradi.

Keling, bir misolni olaylik, bunda foydalanuvchi uzatgan qiymatlarning o'rtachasini hisoblovchi funksiyamiz bor va qiymat bo'sh ro'yxat bo'lmasligi kerak. Biz parametrni tekshirish uchun assert operatoridan foydalanamiz va agar uzatilgan ro'yxatning uzunligi nolga teng bo'lsa, dastur to'xtaydi.

1-misol: assert'dan xato xabarisiz foydalanish

example.py
def avg(marks):
    assert len(marks) != 0
    return sum(marks)/len(marks)

mark1 = []
print("Average of mark1:",avg(mark1))

Yuqoridagi dasturni ishga tushirganimizda, natija bunday bo'ladi:

kod
AssertionError

Biz assert operatoriga bo'sh mark1 ro'yxatini uzatganimiz uchun xatolik oldik, shart noto'g'ri bo'ldi va assert dasturni to'xtatib, AssertionError berdi.

Endi keling, assert shartini qanoatlantiradigan boshqa ro'yxatni uzatamiz va natijamiz nima bo'lishini ko'ramiz.

2-misol: assert'dan xato xabari bilan foydalanish

example.py
def avg(marks):
    assert len(marks) != 0,"List is empty."
    return sum(marks)/len(marks)

mark2 = [55,88,78,90,79]
print("Average of mark2:",avg(mark2))

mark1 = []
print("Average of mark1:",avg(mark1))

Yuqoridagi dasturni ishga tushirganimizda, natija bunday bo'ladi:

kod
Average of mark2: 78.0
AssertionError: List is empty.

Biz avg() funksiyasiga bo'sh bo'lmagan mark2 ro'yxatini va bo'sh mark1 ro'yxatini ham uzatdik, va biz mark2 ro'yxati uchun natijani oldik, lekin undan keyin AssertionError: List is empty. xatoligini oldik. assert sharti mark2 ro'yxati tomonidan qanoatlantirildi va dastur ishlashda davom etdi. Biroq, mark1 shartni qanoatlantirmaydi va AssertionError beradi.

Yodda saqlash kerak bo'lgan asosiy fikrlar

  • Assertionlar — kodda har doim to'g'ri bo'lishi kerak bo'lgan shart yoki mantiqiy ifoda.
  • assert operatori ifoda va ixtiyoriy xabarni oladi.
  • assert operatori argumentning turlarini, qiymatlarini va funksiyaning natijasini tekshirish uchun ishlatiladi.
  • assert operatori sozlash (debugging) vositasi sifatida ishlatiladi, chunki u xatolik yuz bergan joyda dasturni to'xtatadi.
QBilimingizni sinab ko'ring
1 / 3

1. assert operatoridagi shart False bo'lsa nima sodir bo'ladi?