tgoop.com/pyHints/58
Last Update:
بخاطر صحبتهایی که توی گروه (کامنتهای پست قبلی شد) تصمیم گرفتم راجب مطرحترین حالت های exception handling بطور خلاصه توضیحی بدم :
توی پایتون دوتا استایل کد زدن خیلی معروف وجود داره :
1- easier to ask forgiveness than permission (EAFP)
2- look before you leap (LBYL) A.K.A : ask for permission first
شخصا روش اول رو ترجیح میدم (توی سورس کد پایتون هم دید همین هست اگر خونده باشید بخصوص پایتون ۳.۱۱) داستان روش اول اینه که شما سعی میکنه کار رو انجام بدی اگر نشد exception ایی که بر میگرده رو handle میکنی و توی اون exception سعی میکنی حالت دیگه کار رو انجام بدی و ....
حالت دوم میگه قبل از اینکه ارور بخوری شده ۲۰ تا if, else تو در تو داشته باشی اشکال نداره ولی try - except رو کم کن (خیلی پایتونی نیست این روش)
حالت دوم رو بیشتر توی کدهای جاوا و C++ میبینید که صحبت از سربار try-except هست نسبت به if - else (البته شخصا این رو قبول ندارم) این موضوع برای پایتون صادق نیست بخصوص توی پایتون 3.11 و با توجه به معرفی zero-cost exceptionsالبته ۱۰۰٪ هم بدون هزینه نیست (مثل C++ دوست داشتید سرچ کنید راجبش)
اما کدوم استایل رو باید رعایت کنید
LBYL :
داشتن if-else های تو در تو و چک کردن شرایط و جلوگیری از بروز exception یا
EAFP :
داشتن try-except تو در تو (درصورت بروز exception) به هندل کردنش فکر میکنیم اگر exception بوجود نیومد نیازی نداریم شرایط رو بررسی کنیم.
اگر میخواید پایتونی کد بزنید قطعا توی ۹۰٪ شرایط EAFP رو دنبالش باشید؛
اما چطوری ۱۰٪ رو تشخیص بدید ؟
خیلی ساده؛ هر روشی که تعداد خط کد کمتری لازم داشت و تمیزتر بود بعضی وقتا
Ask for permission first (LBYL)
کمک میکنه کد خواناتر و تمیزتر باشه.
سعی میکنم یک نمونه کد از هر ۲ مورد هم پیدا کنم یا بنویسم و بذارم.
@PyHints
BY Python Hints
Share with your friend now:
tgoop.com/pyHints/58
