ترفند پایتونی 1 – assert

اگر برنامه نویسی، حتی در حد مختصر هم کرده باشید یه جاههایی از کد به خطاهایی در منطق کدتون برخورد می کنید. اگه از قبل بخواهید آمادگی لازم برای مواجه با این خطاها پیدا کنید گزینه هایی وجود داره! در این ترفند به بررسی assert می پردازیم. به قول Dan Brader نویسنده کتاب python tricks که منبع این پست هم هست :

Covering Your A** With Assertions

و اما assert، به developer کمک می کنه تا بتونه راحت تر debug کنه و خطای کد رو متوجه بشه!

به طور مثال می خواهید با تابع زیر تخفیفی رو برای محصولی در نظر بگیرید و قیمت رو پس از کسر تخفیف مورد نظرتون برگردونید.

عبارت assert 0 <= price <= product[‘price’] در صورتی که مقدار قیمت پس از اعمال تخفیف از صفر کمتر بشه (منفی بشه) یا بیشتر از قیمت ابتدایی بشه خطایی با عنوان AssertionError بر میگردونه ولی در صورتی که در بازه مورد نظر باشه به کارش ادامه میده!

با تست کد بالا با مقادیر زیر:

مقدار 11175 برگردانده می شود

ولی اگر تخفیف رو منفی کنیم با خطای AssertionError مواجه میشیم!

چطور در پایتون assert بنویسیم؟

سینتکس پایتونی برای این کار به صورت زیره :

بخش اول عبارت بالا همون بخش منطق و logic است و عبارت دوم که اختیاری هم هست متنیه که می خواهید در صورت بروز خطا نشون داده بشه.

همچنین بد نیست بدونید در حقیقت عبارت بالا توسط مفسر پایتون به صورت زیر اجرا میشه :

یکی از مزایای استفاده از assert کمک به پیدا کردن خطاهایی هستند که در هنگام پیدا کردن خطا باهاشون مواجه میشید (هنگام دیباگ یه باگ به باگ میخوری!) این باگ ها به Heisenbug معروفند (بر گرفته شده از اصل عدم قطعیت هایزنبرگ). 

توچه

  توجه

دو نکته رو قبل از هر گونه استفاده از  assert در نظر داشته باشید. اول این که؛ از assert برای data validation استفاده نکنید و دوم؛ وقتی شما یک tuple به عنوان اولین آرگومان به assert می دهید حتی اگه منطقتون خطا هم باشه همیشه true خواهد شد.

 

ببیشتر بخونید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست