ساختار match-case
در پایتون
ساختار match-case
در نسخه 3.10 پایتون معرفی شد و به عنوان شکل توسعهیافتهتری از شرطهای if-elif-else
عمل میکند. این ساختار شبیه به switch-case
در زبانهای دیگر مانند C یا Java است، اما با قابلیتهای بسیار پیشرفتهتر که به آن «تطبیق ساختاری» یا Structural Pattern Matching گفته میشود.
مثال ساده:
status = 404
match status:
case 200:
print("Success")
case 404:
print("Not Found")
case 500:
print("Server Error")
case _:
print("Unknown")
تفاوت با if
:
- کد
match-case
خواناتر و مرتبتر ازif-elif-else
است، بهخصوص زمانی که چندین مقدار مختلف باید بررسی شوند. - در
match-case
میتوان ساختارهای پیچیدهتری مانند لیست، دیکشنری یا آبجکت را نیز تطبیق داد. - در
match
میتوان از الگوهایی مانند باز کردن لیست، بررسی نوع، بررسی مقادیر تو در تو و حتی اتصال متغیر در الگو استفاده کرد.
مثال تطبیق ساختاری پیچیده:
user = {"type": "admin", "name": "Sara"}
match user:
case {"type": "admin", "name": name}:
print(f"Admin user: {name}")
case {"type": "guest", "name": name}:
print(f"Guest user: {name}")
case _:
print("Unknown user")
نکته: ساختار match-case
فقط در پایتون 3.10 و بالاتر قابل استفاده است و در نسخههای پایینتر باعث خطا خواهد شد.