PYHINTS Telegram 58
بخاطر صحبت‌هایی که توی گروه (کامنت‌های پست قبلی شد) تصمیم گرفتم راجب مطرح‌ترین حالت های 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
👍282👏1



tgoop.com/pyHints/58
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Members can post their voice notes of themselves screaming. Interestingly, the group doesn’t allow to post anything else which might lead to an instant ban. As of now, there are more than 330 members in the group. As five out of seven counts were serious, Hui sentenced Ng to six years and six months in jail. End-to-end encryption is an important feature in messaging, as it's the first step in protecting users from surveillance. In the “Bear Market Screaming Therapy Group” on Telegram, members are only allowed to post voice notes of themselves screaming. Anything else will result in an instant ban from the group, which currently has about 75 members. Concise
from us


Telegram Python Hints
FROM American