از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
بیانیه سوئیچ پایتون
سرفصلهای مطلب
معرفی
دستور switch ابزاری قدرتمند و راحت برای کنترل جریان برنامه شما است. این به شما امکان می دهد بسته به سرعت و به راحتی چندین شاخه کد ایجاد کنید روی مقدار یک متغیر یا عبارت داده شده معمولاً زمانی استفاده می شود که شما نیاز به اجرای منطق متفاوت دارید روی مقدار یک متغیر معین، که می تواند بیش از 2 (اما تعداد محدود) مقدار داشته باشد.
در این مقاله، روش استفاده از دستور 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، برنامه نویسان اکنون روشی راحت تر و شهودی برای کنترل جریان برنامه های خود دارند. روی مقدار یک متغیر یا عبارت داده شده در بخش بعدی روش استفاده از دستور سوئیچ واقعی در پایتون را بررسی خواهیم کرد.
را 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")
در این کد از کد استفاده می کنیم 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
برابر است با “بله” یا “y”، اولین شاخه کد اجرا خواهد شد. این معادل رفتار سقوط در یک دستور سوئیچ سنتی است.
پیش فرض ها
همانطور که احتمالاً از مثال های بالا متوجه شده اید، مورد “پیش فرض” با استفاده از زیر خط (_
). این “کارت عام” در نظر گرفته می شود و با همه مقادیر مطابقت دارد. اگر یکی از موارد قبلی با مقدار مطابقت داشته باشد، شاخه کد پیشفرض از آن عبور کرده و اجرا نمیشود.
نتیجه
همانطور که می بینید، عبارت match Python (معروف به “switch”) یک راه قدرتمند و راحت برای کنترل جریان برنامه شما ارائه می دهد. چه در پایتون تازه کار باشید و چه یک توسعه دهنده با تجربه، دستور switch می تواند به شما کمک کند کدهای تمیزتر و کارآمدتر بنویسید.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-02 14:29:07