عملگرهای هویت (is و is not) در پایتون (python)

شاید نیاز باشه که مثلاً چک کنید اگر نوع فلان چیز list نبود، خطا بده! در پایتون (python) دو عملگر is و is not برای بررسی هویت یک مقدار و چک کردن اینکه آیا از نوع یا کلاس فلان است یا نه استفاده میشه!

عملگر هویت اصلاً یعنی چی؟!

در پایتون (python)، عملگرهای هویت (identity) چِک می‌کنن که آیا یک مقدار، دارای کلاس یا نوع فلان هست یا نیست! مثلاً فرض کنید می‌خواید یه تابعی بنویسید که فقط کاربر باید بهش لیست وروردی بده! و اگر نوع ورودی کاربر لیست نبود! باید بهش خطا بدیم که این چیه به من دادی؟! مگر نگفتم بهم لیست بده؟! (دقیقاً همینکه گفتم رو در انتهای همین آموزش در قالب یک مثال کاربردی برای محاسبه میانگین یک لیست استفاده می‌کنیم!)

عملگر هویت is

مثلاً فرض کنید می‌خوایم یک عدد از کاربر دریاف کنیم! و اگر نوع این ورودی int (مخفف integer به معنی عدد صحیح) بود، بگه! اِیوَل (Eyval می‌نویسیم توی کد!!) و اگر غیر این بود بگه این چیه وارد کردی؟!

در این صورت داریم!

در خط ۱ متغیری با مقدار ۲٫۵ تعریف کردیم به اسم a !

در خط ۲ میگیم اگر نوع a (کلمه type به معنی نوع است!) برابر با int (عدد صحیح) بود، [خط ۳] چاپ کن ایول!

[خط ۴] در غیر اینصورت [خط ۵] چاپ کن: این چیه وارد کردی!

که در اینجا چون نوع چیزی که ما وارد کردیم عدد صحیح نیست، میگه: این چیه وارد کردی!

عملگر هویت is not

خب حالا می‌خوایم این دفعه اگر ورودی که کاربر وارد کرده، نوعش متن (string) نبود، بهش خطا بدیم!

قطعه کد زیر رو در نظر بگیرید!

خط اول که متغیری با اسم a و با مقدار ۲٫۵ تعریف کردیم!

در خط ۲ میگیم اگر نوع a برابر str (یعنی متن، مخفف string است!) نبود! [توجه کنید که این str در خود پایتون تعریف شده! و شما وقتی می‌گید str پایتون میدونه که دارید میگید string! پس اینا اسامی من درآوردی نیست! این str در خود python تعریف شده کاملاً!]

[خط ۳]: بیاد خطای نوع بده! (TypeError) و بازهم تاکید میکنم این TypeError متغیری است که در خود پایتون تعریف شده و برای همین خطای‌نوع بکار گرفته میشه و اسم دلبخواه نبوده!)

اون raise هم که میگیم یعنی «بده، تخویل بده»! حالا چه چیزی بده؟ خطای نوع رو (TypeError) که جلوش نوشتیم رو! (این raise از اون اسامی بود که در خود پایتون هست و از خودمون در نیاوردیم!)

مثال کاربردی

خب بریم سراغ همون مثالی که اول جلسه گفتیم! ولی تاکید می‌کنم که نیازه برای فهم این مثال (به دلیال جامع‌تر بودنش)، پیش‌نیازهای موردنیاز از دوره رایگان آموزش مقدماتی پایتون وبسایت خودمون رو گذرووونده باشید!

فرض کنید می‌خوایم یک برنامه بنویسیم که میانیگن یک لیست که کاربر وارد میکنه رو بده! پس واضحه که کاربر باید یک لیست بده! اما اگر خدایی نکرده کاربر چیزی بجز لیست داد، می‌خوایم اولاً بهش بگیم باید لیست بدی و دوماً بهش خطا بدیم! برای این کار داریم:!

در خط ۱ گفتیم تابعی به اسم Average درست کن! (اسم دلبخواه است!) که ورودی میگیره به اسم L (این هم اسمی دلبخواه است! میتونستید اسم ورودی رو بذارید Sajjad و سجاد صداش کنید! من اسمشو گذاشتم L !)

در خط ۲ میگیم اگر نوع L برابر list نبود، [خط ۳] اولاً چاپ کن: ورودی تابع باید یک لیست باشد!

[خط ۴] دوماً خطای نوع بده! (TypeError)!

[خط ۵]: در غیر اینصورت..!

[خط ۶] متغیری به اسم avg تعریف کن که برابر است با مجموع اعضای اون L (که درواقع همون لیستمون هست) تقسیم بر تعداد اعضای لیست!

و در خط ۷ هم میایم همون avg رو به عنوان خروجی تابع بر می‌گردونیم!

حالا مثلاً اگر بخوایم از این تابع استفاه کنیم، داریم:!

که عملاً میگیم: چاپ کن: خروجی تابع Average که بهش [۱,۲,۳] رو دادیم!

وقتی به تابع Average لیست [۱,۲,۳] میدیم، میانگین ۲ رو برمی‌گردونه (اما چاپ نمیکنه! البته بجز در بعضی IDE های خاص که ما کاری با اون‌ها نداریم و داریم کلی صحبت می‌کنیم!)

و در نهایت با دستور print هم میایم چاپ میکنیم اون چیزی که برگردونده رو!

تمرین

۱- به تابع فوق مثلاً تووووی ورودیش بدید ۲ ! ببیتید چجوری بهتون خطا میده!

۲- مشابه همین چیزی که نوشتیم، شما یک تابع بنویسید مجموع یک لیست رو حساب کنه! [تمام نکات مورد نیازش رو توی آموزش‌های مقدماتی پایتون خودمون گفتیم و اگر با ما پیش اومده باشید، قطعاً نباید به مشکلی بخورید!]

کانال تلگرامی ما رو هم دنبال کنید (هر روز تمرین پایتون و مطالب مفیدی قرار میدیم)@Koolac_Org
+