آموزش کامل ساختار match-case در پایتون

اگر شما هم از دسته برنامهنویسانی هستید که از شرطهای تو در توی if-elif-else
خسته شدید، خبر خوب اینه که از نسخهی Python 3.10 به بعد میتونید از ساختار جذاب و تمیز match-case استفاده کنید! این ساختار مثل switch-case
در زبانهای دیگهست، اما قدرت و انعطافپذیری بیشتری داره.
در این مقاله از آی کد آکادمی قراره صفر تا صد ساختار match-case
رو یاد بگیریم. همراه ما باش!
ساختار match-case چیست؟
ساختار match-case
یکی از ویژگیهای جدید پایتون ۳.۱۰ به بعده. این ساختار برای بررسی مقادیر مختلف یک متغیر و اجرای دستورات بر اساس اون مقدار استفاده میشه. چیزی شبیه switch-case
در C یا JavaScript، اما قدرتمندتر چون الگوهای پیشرفتهتر رو هم پشتیبانی میکنه.
نحوه نوشتن match-case در پایتون
ساختار کلی match-case
به شکل زیره:
match variable:
case value1:
# code for value1
case value2:
# code for value2
case _:
# default case (similar to else)
توجه: علامت زیرخط (_) به معنی حالت پیشفرضه و در صورتی اجرا میشه که هیچکدوم از caseها مطابق نباشن.
مثال ساده از match-case در پایتون
fruit = "apple"
match fruit:
case "apple":
print("This is an apple ")
case "banana":
print("This is a banana ")
case "watermelon":
print("This is a watermelon ")
case _:
print("Unknown fruit!")
خروجی:
This is an apple
مقایسه match-case با if-elif-else
مثال بالا با if-elif-else:
if fruit == "apple":
print("This is an apple ")
elif fruit == "banana":
print("This is a banana ")
elif fruit == "watermelon":
print("This is a watermelon ")
else:
print("Unknown fruit!")
با شرط هم اگر بخوایم میتونیم انجام بدیم ولی کد با match-case
مرتبتر و قابلفهمتره.
قابلیتهای پیشرفته match-case
1. بررسی چند مقدار در یک case
day = "saturday"
match day:
case "friday" | "saturday":
print("It's a weekend!")
case "sunday" | "monday" | "tuesday":
print("It's a working day.")
case _:
print("Unknown day")
با
|
میتونی چند مقدار رو در یک case بررسی کنی.
2. استفاده از متغیر در case (Binding)
user = ("ali", 23)
match user:
case (name, age):
print(f"Name: {name} - Age: {age}")
وقتی ساختار دادهات tuple یا ساختار مشابه باشه، میتونی عناصرش رو مستقیماً درون case باز کنی.
3. بررسی نوع داده
data = [1, 2, 3]
match data:
case list():
print("This is a list")
case dict():
print("This is a dictionary")
case _:
print("Unknown type")
4. استفاده از Guard در match-case (شرط اضافی روی case)
گاهی اوقات فقط match شدن با یک الگو کافی نیست، و دوست داری شرط اضافهای هم چک بشه. اینجا میتونی از guard استفاده کنی که با کلمهی کلیدی if
بعد از case
میاد.
number = 5
match number:
case x if x > 0:
print("Positive number")
case x if x < 0:
print("Negative number")
case 0:
print("Zero")
در این مثال، هر
case
فقط وقتی اجرا میشه که هم با الگو match بشه و هم شرط if درست باشه.
5. ترکیب الگو + guard
person = ("sara", 17)
match person:
case (name, age) if age >= 18:
print(f"{name} is an adult.")
case (name, age):
print(f"{name} is underage.")
اگه guard نبود، هر دو case با tuple match میشن و فقط اولین اجرا میشه. ولی چون شرط گذاشتیم، فقط وقتی age بالای ۱۸ باشه case اول اجرا میشه.
نکات مهم دربارهی Guard در match-case
شرط guard فقط وقتی بررسی میشه که الگو match شده باشه.
ترتیب caseها خیلی مهمه. چون match-case اولین گزینهی معتبر رو اجرا میکنه.
میتونی از هر عبارت
if
استانداردی توی guard استفاده کنی.
نکات مهم در استفاده از match-case
فقط در پایتون ۳.۱۰ به بعد کار میکنه.
ترتیب caseها مهمه؛ اولین موردی که match بشه اجرا میشه.
نمیتونه جایگزین کامل if-else بشه، چون برای بررسی شرطهای پیچیده (مثل x > 10) بهتره از if استفاده بشه.
match-case
از قدرت Pattern Matching بهره میبره که توی زبانهای پیشرفتهای مثل Rust یا Scala هم وجود داره.
کاربردهای match-case در دنیای واقعی
ساخت منوهای CLI ساده
تجزیه و تحلیل دادههای ساختاریافته مثل JSON یا tuple
مدیریت وضعیت (state handling) در بات تلگرام یا اپلیکیشنها
جمعبندی
ساختار match-case
در پایتون راهی ساده، شفاف و حرفهای برای نوشتن شرطهای مختلفه. این ساختار کمک میکنه کد شما خواناتر، کوتاهتر و قابل نگهداریتر باشه. اگر از پایتون ۳.۱۰ یا جدیدتر استفاده میکنی، حتماً از این ویژگی استفاده کن!
اگر سوالی درباره match-case
داری، حتماً در بخش نظرات آی کد آکادمی بپرس! ما در کنار تو هستیم تا پایتون رو شیرینتر یاد بگیری.
دیدگاهتان را بنویسید