بیانیه سوئیچ پایتون

معرفی

دستور switch ابزاری قدرتمند و راحت برای کنترل جریان برنامه شما است. این به شما امکان می دهد تا به سرعت و به راحتی چندین شاخه از کد را بسته به مقدار یک متغیر یا عبارت مشخص ایجاد کنید. معمولاً زمانی استفاده می‌شود که شما نیاز به اجرای منطق متفاوت بسته به مقدار یک متغیر معین دارید، که می‌تواند بیش از ۲ (اما تعداد محدود) مقدار داشته باشد.

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

قبل از نسخه 3.10

قبل از اینکه دستور سوئیچ پایتون به صورت بومی در زبان موجود باشد، برنامه نویسان مجبور بودند از ساختارهای کنترلی دیگری برای دستیابی به عملکرد مشابه استفاده کنند. یکی از رویکردهای رایج استفاده از یک سری عبارات if-else بود که هر شاخه از کد با مقدار متفاوتی از متغیر مورد آزمایش همراه بود.

برای مثال کد زیر را در نظر بگیرید:

value = "foo"

if value == "foo":
    print("foo was selected")
elif value == "bar":
    print("bar was selected")
else:
    print("Nothing valid was selected")

در این کد، از دستور if-else استفاده می کنیم تا مشخص کنیم کدام شاخه از کد را بر اساس مقدار متغیر اجرا کنیم. value. اگر value برابر "foo" است، اولین شاخه کد اجرا می شود. اگر value برابر "bar" است، شاخه دوم کد اجرا می شود. در غیر این صورت، کد در else بلوک اجرا خواهد شد.

در حالی که این روش کار می کند، با افزایش تعداد مقادیر ممکن برای متغیر، به سرعت می تواند ناکارآمد شود. علاوه بر این، می تواند خواندن و درک کد را دشوار کند.

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

برای مثال کد زیر را در نظر بگیرید:

value = "foo"

switch = {
    "foo": lambda: print("foo was selected"),
    "bar": lambda: print("bar was selected"),
    "default": lambda: print("Nothing valid was selected"),
}

switch.get(value, "default")()

در این کد یک دیکشنری به نام تعریف کرده ایم switch، با کلیدهایی که مقادیر احتمالی متغیر را نشان می دهند value. برای هر کلید، یک تابع لامبدا به عنوان مقدار اختصاص داده ایم که شامل شاخه کد مربوطه است. برای اجرای شاخه کد مناسب از کد استفاده می کنیم get() متد دیکشنری، که به ما اجازه می‌دهد یک مقدار پیش‌فرض را برای استفاده در صورتی که کلید داده شده در فرهنگ لغت وجود ندارد، تعیین کنیم.

در حالی که این رویکرد نسبت به استفاده از دستورات if-else انعطاف‌پذیرتر و فشرده‌تر است، اما خواندن و درک آن همچنان دشوار است، به خصوص اگر کد هر شاخه پیچیده باشد. علاوه بر این، نیاز به استفاده از توابع لامبدا دارد که می تواند برای برخی از برنامه نویسان گیج کننده باشد. ما استفاده از این روش را پیشنهاد نمی کنیم مگر اینکه به دلایلی نتوانید از روش های دیگر در این مقاله استفاده کنید.

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

La match/case بیانیه (بعد از نسخه 3.10)

بعد از پایتون نسخه 3.10، دستور switch با استفاده از match کلمه کلیدی. این کلمه کلیدی برای ایجاد یک عبارت مطابق با الگو استفاده می شود، که به شما امکان می دهد مقدار یک متغیر یا عبارت داده شده را در برابر یک سری الگوها آزمایش کنید. اگر مطابقت یافت شود، شاخه مربوطه از کد اجرا می شود.

برای مثال کد زیر را در نظر بگیرید:

value = "foo"

match value:
    case "foo":
        print("foo was selected")
    case "bar":
        print("bar was selected")
    case _:
        print("Nothing valid was selected")

راهنمای عملی و عملی ما برای یادگیری Git را با بهترین روش ها، استانداردهای پذیرفته شده در صنعت و برگه تقلب شامل بررسی کنید. دستورات Google Git را متوقف کنید و در واقع یاد گرفتن آی تی!

در این کد از کد استفاده می کنیم match کلمه کلیدی برای ایجاد یک عبارت مطابق با الگو، که مقدار متغیر را آزمایش می کند value در برابر یک سری الگوها اگر value برابر "foo" است، اولین شاخه کد اجرا می شود. اگر value برابر "bar" است، شاخه دوم کد اجرا می شود. در غیر این صورت کد موجود در بلوک else اجرا می شود.

سقوط از طریق

یکی از تفاوت های کلیدی بین دستورهای سوئیچ در پایتون و دستورات سوئیچ سنتی در زبان های دیگر این است که پایتون match بیانیه از fall-through پشتیبانی نمی کند. به عبارت دیگر، هنگامی که یک مطابق پیدا شد و شاخه مربوطه از کد اجرا شد، match عبارت به پایان می رسد و هیچ کد دیگری در آن وجود ندارد match بیانیه اجرا می شود. در زبان های دیگر، این معمولا با استفاده از break کلمه کلیدی، که در اینجا مورد نیاز یا پشتیبانی نمی شود.

اگر می‌خواهید به همان رفتاری که در یک دستور سوئیچ سنتی وجود دارد دست یابید، می‌توانید از آن استفاده کنید | اپراتور برای مطابقت چند مورد. این عملگر به شما امکان می دهد چندین الگو را در یک واحد مشخص کنید case، و هر یک از الگوها را می توان برای شروع اجرای آن شاخه مطابقت داد.

برای مثال کد زیر را در نظر بگیرید:

value = "y"

match value:
    case "yes" | "y":
        print("The user confirmed")
    case _:
        print("The user denied")

در اینجا، اگر ارزش value برابر است با "بله" or "y" اولین شاخه کد اجرا می شود. این معادل رفتار سقوط در یک دستور سوئیچ سنتی است.

پیش فرض

همانطور که احتمالاً از مثال های بالا متوجه شده اید، مورد "پیش فرض" با استفاده از یک زیرخط (_). این "کارت عام" در نظر گرفته می شود و با همه مقادیر مطابقت دارد. اگر یکی از موارد قبلی با مقدار مطابقت داشته باشد، شاخه کد پیش‌فرض از آن عبور کرده و اجرا نمی‌شود.

نتیجه

همانطور که می بینید، عبارت match Python (معروف به "switch") یک راه قدرتمند و راحت برای کنترل جریان برنامه شما ارائه می دهد. چه در پایتون تازه کار باشید و چه یک توسعه دهنده با تجربه، دستور switch می تواند به شما کمک کند کدهای تمیزتر و کارآمدتر بنویسید.

تمبر زمان:

بیشتر از Stackabuse