ساختار سوییچ کیس وارد پایتون می شود!

Image not Found

بهه رفقا چطورین؟

شهریار هستم و امیدوارم حالتون عالی عالی باشه و خوش اومدید به اولین پست من در سایت FOSSFA.

دیروز داشتم برای خودم توی سایت های پایتونی میچرخیدم که چشمم به یک مطلب خیلی جالب خورد.داستان از این قراره که توی پایتون3.10 قراره شاهد ورود ساختار match یا همون سوییچ کیس ها باشیم.به ذهنم رسید شاید خیلی از پایتون دولوپرها با این ساختار آشنا نباشن.برای همین تصمیم گرفتم که توی این مطلب درباره این ساختار ونحوه پیاده سازیش توی پایتون توضیح بدم

python

ساختار سوييچ کيس چيست؟

خب برای اینکه ببینیم این ساختار چیه و جه کمکی به ما میکنه بذارید با یک مثال شروع کنیم.فرض کنید که من میخوام یک برنامه بنویسم که از کاربرم ورودی بگیرم و به ازای هر عددی که وارد میکنه یکی از روزهای هفته رو نمایش بدم.خب من میتونم این شکلی توی پایتون بنویسم:

number = int(input("Enter your number Between 1 and 7: "))

if number == 1:
    print("shanbe")
elif number == 2:
    print("yekshanbe")
elif number == 3:
    print("Doshanbe")
elif number == 4:
    print("seshanbe")
elif number == 5:
    print("charshanbe")
elif number == 6:
    print("pangshanbe")
elif number == 7:
    print("jomee")
else:
    print("Error")

خب همونطور که دارید میبینید توی این برنامه من کلی if و elif ردیف کردم پشت هم.این برنامه علاوه بر اینکه ظاهر خوبی نداره من باید هربار هی بیام و توی شرطم بگم که هم ارزی متغیرم با مقادیری که توی ذهنمه مقایسه کنه. حالا من میام این برنامه رو مجددا مینویسم با این تفاوت که اینبار قراره با ساختار مچ کیس یا همون سوییچ کیسی که قراره توی پایتون بیاد بنویسمش.

number = int(input("Enter your number Between 1 and 7: "))
match number:
    case 1:
        print("shanbe")
    case 2:
        print("yekshanbe")
    case 3:
        print("doshanbe")
    case 4:
        print("seshanbe")
    case 5:
        print("charshanbe")
    case 6:
        print("pangshanbe")
    case 7:
        print("jome")
    case _:
        print("Error")

خب بیاین کدمون رو تحلیل کنیم تا ببینیم این کد چجوری کار میکنه.

خب توی قدم اول اگه نگاه کنید بعد از گرفتن ورودی از کاربر با این عبارت مواجه میشیم. match number ما توی این بخش متغیرمون رو در ساختار مچ قرار میدیم.وقتی اینو مینویسم عملا دارم به برنامم میگم که تو متغیر number رو زیر نظر داشته باش و حواست باشه چه مقداری داخلش قرار میگیره. توی خطوط بعدی یکسری کد مبینیم که مثل شرط و حلقه دقيقا بايد زیر مجموعه ساختار مچ ما باشه

اما در بخش دوم یکسری کد میبینیم که تقریبا همشون یک همچین سیستمی رو دارن:

case {{ value }}:
        #do someting

خب از همون کلمه case شروع میکنیم.مثلا ما وقتی میگیم case 4 یعنی اگه مقدار متغیری که رو به روی کلمه match نوشتم برابر با ۴ بود تو کدی که زیرمجموعه case هست رو اجرا کن.یخورایی اون کد بالا برابره با این شرطی که روبروی if یا elif قرار میدیم

number == 4

پس ما تا اینجا فهمیدیم ما متغیر مربوطه رو رو به روی match قرار میدیم تا ساختار مچ روی اون متغیر تمرکز کنه و بعد رو به روی case ها میایم و مقداری که میخوایم برابر مقدار متغیرمون باشه رو مینویسیم تا این هم ارزی بررسی و درصورت درست بودن هم ارزی کاری که زیر کیس مینویسیم رو انجام بده

اما همینجا یک سوال پیش میاد

case _ چیه پس؟

خب همونطور که میدونید ما توی ساختار شرطمون یک else داشتیم که میومدیم و با اون میگفتیم که else درصورتی اجرا میشه که تمام حالت های توی if و elif درست نباشن یا به اصطلاح خودمون مقدار False رو برگردونن.

خب ما همچین مکانیزمی رو توی ساختار مچ یا همون سوییچ در همه زبان های برنامه نویسی داریم. در اکثر زبان های برنامه نویسی ما برای این حالت توی ساختار کنترلی خودمون از

default:
    #do something

استفاده میکنیم.اما توی پایتون پیاده سازی این بخش یکخورده متفاوت خواهد بود. ما بجای استفاده از کلمه default از کیس استفاده میکنیم منتها برای مقدار باید از کارکتر آندرلاین (( _ )) استفاده کنیم مثل نمونه کدی که برای برناممون با ساختار مچ نوشتیم.این شکلی به ساختار match میفهمونیم که هروقت مقدار متغیر یکی از مقادیری که در کیس ها تعریف کردیم نبود اونوقت تو بیا و دستوری که زیر مجموعه:

 case _: 

رو اجرا کن.این کد دقیقا حکم else رو در ساختار match داره.

همونطور که میبینید ما برنامه هایی که به این شکل هستن رو میتونیم خیلی راحت تر و منظم تر بنویسیم.

از نظر من این فیچر باید همون اول شروع پایتون قرار داده میشد اما خب الانم که این کارو کرده یک حرکت رو به جلو برای پایتون محسوب میشه و در آینده از این قابلیت پایتون خیلی زیاد استفاده خواهد شد.

امیدوارم از خوندن این مطلب لذت برده باشید.یادتون نره که حتما حتما نظرتون درباره این مطلب بگید و همینطور بگید که نظرتون درباره این قابلیت جدید پایتون چیه؟

منبع - با تغییرات لازم