آموزش پایتون - بررسی صحت

بررسی‌های صحت (Assertions) در پایتون

بررسی‌های صحت (Assertions) در پایتون دستوراتی هستند که برقرار بودن یا درست بودن یک شرط را ارزیابی و تضمین می‌کنند. اگر آن شرط نادرست (False) از آب درآید، پایتون یک استثنای AssertionError ایجاد می‌کند. از بررسی‌های صحت برای تشخیص خطاهای برنامه‌نویسی استفاده می‌شود که در صورت درست بودن کد، هرگز نباید رخ دهند.

  • ساده‌ترین راه برای درک بررسی صحت، مقایسه آن با یک دستور raise-if (یا به عبارت دقیق‌تر، دستور raise-if-not) است. یک عبارت ارزیابی می‌شود و اگر نتیجه آن نادرست باشد، یک استثنا رخ می‌دهد.

  • بررسی‌های صحت توسط دستور assert انجام می‌شوند که جدیدترین کلمه کلیدی در پایتون است و در نسخه ۱.۵ معرفی شد.

  • برنامه‌نویسان اغلب بررسی‌های صحت را در ابتدای یک تابع قرار می‌دهند تا ورودی معتبر را بررسی کنند، و همچنین پس از فراخوانی تابع برای بررسی خروجی معتبر از آن‌ها استفاده می‌کنند.

دستور assert

در پایتون، بررسی‌های صحت از کلمه کلیدی assert به همراه یک عبارت استفاده می‌کنند. اگر عبارت مقدار False داشته باشد، یک AssertionError ایجاد می‌شود. در ادامه سنتکس بررسی صحت آورده شده است −

assert condition, message

که در آن،

  • condition − یک عبارت بوليانی که باید درست (true) باشد.

  • message (اختیاری) − یک پیام اختیاری که در صورت رد شدن بررسی صحت نمایش داده می‌شود.

استفاده از بررسی‌های صحت

بررسی‌های صحت عموماً در طول مراحل توسعه و تست برای ارزیابی شرایطی استفاده می‌شوند که همیشه باید درست باقی بمانند.

مثال

در مثال زیر، از بررسی صحت استفاده می‌کنیم تا مطمئن شویم متغیر "num" در محدوده معتبر "0" تا "100" قرار دارد. اگر بررسی صحت رد شود، پایتون یک "AssertionError" ایجاد کرده و از اجرای ادامه دستور print بعدی جلوگیری می‌کند −

print('Enter marks out of 100:')
num = 75
assert num >= 0 and num <= 100
print('Marks obtained:', num)

num = 125
assert num >= 0 and num <= 100
print('Marks obtained:', num)  # This line won't be reached if assertion fails

خروجی کد بالا به صورت زیر است −

Enter marks out of 100:
Marks obtained: 75
Traceback (most recent call last):
  File "/home/cg/root/66723bd115007/main.py", line 7, in <module>
    assert num >= 0 and num <= 100
AssertionError

پیام‌های خطای سفارشی

برای نمایش یک پیام خطای سفارشی هنگام شکست بررسی صحت، یک رشته متنی پس از عبارت در دستور assert اضافه کنید −

assert num >= 0 and num <= 100, "Only numbers in the range 0-100 are accepted"

مدیریت AssertionError

بررسی‌های صحت را می‌توان مانند هر استثنای دیگری با استفاده از بلوک try-except دریافت و مدیریت کرد. اگر مدیریت نشوند، برنامه را متوقف کرده و یک traceback تولید می‌کنند −

try:
   num = int(input('Enter a number: '))
   assert num >= 0, "Only non-negative numbers are accepted"
   print(num)
except AssertionError as msg:
   print(msg)

این کد خروجی زیر را تولید خواهد کرد −

Enter a number: -87
Only non-negative numbers are accepted

بررسی‌های صحت در برابر استثناها (Assertions vs. Exceptions)

بررسی‌های صحت برای ارزیابی وضعیت داخلی و اصل‌های تغییرناپذیری استفاده می‌شوند که همیشه باید درست باشند. در حالی که استثناها به مدیریت خطاهای زمان اجرا و شرایط استثنایی که ممکن است در طول اجرای عادی رخ دهند کمک می‌کنند.

بررسی‌های صحت به طور پیش‌فرض در حالت بهینه‌سازی‌شده پایتون (O- یا python -O script.py) غیرفعال هستند. بنابراین، نباید از آن‌ها برای اعمال محدودیت‌هایی استفاده کرد که برای عملکرد درست برنامه در محیط‌های عملیاتی (Production) مورد نیاز هستند.

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.