چرا فقط از یک استثنای معمولی استفاده نمی کنید؟
اکنون، احتمالاً تعجب میکنید که چرا من فقط از عبارت if استفاده نکردم
و یک استثنا در مثال قبل…
ببینید، استفاده صحیح از ادعاها برای اطلاع رسانی به توسعه دهندگان است
خطاهای غیر قابل جبران در یک برنامه ادعاها در نظر گرفته نشده است
سیگنال شرایط خطای مورد انتظار، مانند خطای File-Not-Found، که در آن
کاربر می تواند اقدامات اصلاحی انجام دهد یا فقط دوباره امتحان کند.
ادعاها به معنای خودآزمایی داخلی برنامه شما هستند. آنها
با اعلام برخی شرایط غیرممکن در کد خود کار کنید. اگر یک
این شرایط برقرار نیست، یعنی یک اشکال در برنامه وجود دارد.
اگر برنامه شما بدون اشکال باشد، این شرایط هرگز رخ نخواهد داد. اما اگر
آنها رخ می دهند، برنامه با گفتن خطای ادعا از کار می افتد
شما دقیقاً کدام شرایط “غیرممکن” ایجاد شده است. این باعث می شود
ردیابی و رفع اشکالات در برنامه های خود بسیار آسان تر است. و من دوست دارم
هر چیزی که زندگی را آسانتر میکند – اینطور نیست؟
در حال حاضر، به خاطر داشته باشید که عبارت ادعای پایتون یک اشکال زدایی است
کمک، نه مکانیزمی برای رسیدگی به خطاهای زمان اجرا. هدف از استفاده
ادعاها این است که به توسعه دهندگان اجازه دهیم علت اصلی احتمالی یک باگ را بیشتر پیدا کنند
به سرعت. یک خطای ادعا هرگز نباید مطرح شود مگر اینکه اشکالی وجود داشته باشد
در برنامه شما
بیایید نگاهی دقیقتر به کارهای دیگری بیندازیم که میتوانیم با ادعاها انجام دهیم، و سپس من دو دام رایج را هنگام استفاده از آنها در دنیای واقعی پوشش خواهم داد
سناریوها
سینتکس ادعای پایتون
همیشه ایده خوبی است که قبل از شروع استفاده از یک ویژگی زبان، در مورد نحوه پیاده سازی واقعی یک ویژگی زبان در پایتون مطالعه کنید. پس بگیریم
با توجه به
اسناد پایتون:
assert_stmt ::= “assert” expression1 [“,” expression2]
در این مورد، express1 شرطی است که ما آزمایش می کنیم و اختیاری است
Expression2 یک پیام خطایی است که در صورت عدم موفقیت در ادعا نمایش داده می شود.
در زمان اجرا، مفسر پایتون هر عبارت ادعایی را تقریباً به دنباله ای از دستورات زیر تبدیل می کند:
if debug:
if not expression1:
raise AssertionError(expression2)
دو نکته جالب در مورد این قطعه کد:
قبل از اینکه شرط اظهار بررسی شود، یک بررسی اضافی برای وجود دارد
متغیر جهانی debug. این یک پرچم بولین داخلی است که درست است
در شرایط عادی و در صورت درخواست بهینه سازی نادرست است.
بعداً در بخش «تلههای رایج» بیشتر در مورد آن صحبت خواهیم کرد.
همچنین، میتوانید از express2 برای ارسال یک پیام خطای اختیاری استفاده کنید
با AssertionError در ردیابی نمایش داده می شود. این می تواند
اشکال زدایی را حتی بیشتر ساده کنید. به عنوان مثال، من کدی مانند این را دیده ام:
این زشته؟ خب بله. اما قطعا یک تکنیک معتبر و مفید است
اگر با Heisenbug2 روبرو هستید
در یکی از برنامه های شما
قوانین ارسال دیدگاه در سایت