از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
پایتون: چندین استثنا را در یک خط بگیرید
سرفصلهای مطلب
معرفی
در این مقاله قصد داریم نگاهی به آن بیاندازیم امتحان کنید/به جز بند، و به طور خاص چگونه می توانید چندین استثنا را در یک خط دریافت کنید، و همچنین روش استفاده از آن suppress()
روش.
هر دوی این تکنیک ها به شما در نوشتن بیشتر کمک می کند در دسترس و همه کاره کدی که به آن پایبند است خشک (خودت را تکرار نکن) اصول.
بیایید با بررسی مشکل شروع کنیم:
try:
do_the_thing()
except TypeError as e:
do_the_other_thing()
except KeyError as e:
do_the_other_thing()
except IndexError as e:
do_the_other_thing()
وحشیانه
همانطور که می بینیم، این بسیار است خیس کد، همان فراخوانی را چندین بار تکرار می کنیم. تمرینهایی مانند این میتواند خواندن و بازآفرینی کد ما را به یک کابوس زنده تبدیل کند.
به جای نوشتن استثناها یکی پس از دیگری، آیا بهتر نیست همه این کنترل کننده های استثنا را در یک خط گروه بندی کنیم؟
استثناهای متعدد
اگر فقط برای یک پاسخ سریع اینجا هستید، ساده است: از تاپل استفاده کنید.
تمام خطاهای موجود در تاپل خط استثنا با هم ارزیابی خواهند شد:
try:
do_the_thing()
except (TypeError, KeyError, IndexError) as e:
do_the_other_thing()
آسان است، درست است؟
اجتناب از اعمال بد
“خطاها هرگز نباید بی سر و صدا بگذرند.” – ذن پایتون.
امتحان کنید/به جز بند ها احتمالاً بیشترین استفاده نادرست از الگوی پایتون هستند.
استفاده نادرست از آنها در نهایت به کلیشه مستیها و تیر چراغها تبدیل میشوند و تنها زمانی استفاده میشوند که مفسر پایتون شروع به سرود خواندن «12 خطای کریسمس» کند.
خیلی وسوسه انگیز است که فقط یک را قرار دهید try
و یک استثناء آشکار روی مشکلی برای “از بین بردن آن”. با انجام این کار، ما به طور موثر استثناها را زیر فرش جارو می کنیم، که مایه شرمساری است، به خصوص که آنها می توانند به طرز شگفت انگیزی در بهبودی از خطاهای بالقوه کشنده یا روشن کردن نور مفید باشند. روی اشکالات پنهان
به همین دلیل است که هنگام استفاده از بندهای غیر، همیشه باید مطمئن شوید که خطاهایی را که میدانید ممکن است با آنها مواجه شوید، مشخص کنید و آنهایی را که نمیبینید حذف کنید.
اجازه دادن به برنامه شما اشکالی ندارد، حتی ترجیح داده می شود، فقط وانمود کنید که مشکل وجود ندارد.
“خطاها هرگز نباید بی صدا بگذرند… مگر اینکه به صراحت ساکت شوند.”
با این حال، یک بار در ماه آبی که فرصت نادیده گرفتن رسیدگی به استثنا را پیدا کردید، می توانید استفاده کنید suppress()
:
from contextlib import suppress
with suppress(TypeError, KeyError, IndexError):
do_the_thing()
این suppress()
متد تعدادی استثنا را به عنوان آرگومان خود می گیرد و a را انجام می دهد امتحان کردن/به جز/گذر کردن با اون خطاها همانطور که می بینید به شما امکان می دهد چندین استثنا را در یک خط بنویسید.
این به شما اجازه می دهد از نوشتن a اجتناب کنید امتحان کردن/به جز/گذر کردن به صورت دستی:
try:
do_the_thing()
except (TypeError, KeyError, IndexError) as e:
pass
بهتر از آن، در هر نسخه ای نیز استاندارد است پایتون 3.4 و بالاتر!
نتیجه
در این مقاله روش مدیریت چندین استثنا در یک خط را توضیح داده ایم. ما همچنین به طور خلاصه برخی از روشهای بد نادیده گرفتن استثناها را مرور کردهایم و از آن استفاده کردهایم suppress()
تابعی برای سرکوب استثناها به طور صریح.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-13 00:54:04