عبارات شرطی کوتاه و match-case

عملگر شرطی (ternary)، عبارت pass و ساختار match-case در پایتون ۳.۱۰+

عملگر شرطی (Ternary Operator)

برای نوشتن شرط‌های ساده در یک خط:

# سینتکس:
# value_if_true if condition else value_if_false

age = 20
status = "بزرگ‌سال" if age >= 18 else "کودک"
print(status)  # بزرگ‌سال

مثال‌های بیشتر

# زوج یا فرد
num = 7
result = "زوج" if num % 2 == 0 else "فرد"
print(result)  # فرد

# مثبت یا منفی
x = -5
sign = "مثبت" if x > 0 else "منفی" if x < 0 else "صفر"
print(sign)  # منفی

# در تابع
def max_val(a, b):
    return a if a > b else b

عبارت pass

pass یک عملیات خالی است — هیچ کاری نمی‌کند. برای جلوگیری از خطا وقتی بلوک خالی دارید:

if True:
    pass  # بعداً کد می‌نویسم

def my_function():
    pass  # تابع خالی

class MyClass:
    pass  # کلاس خالی
پایتون به بلوک‌های خالی اجازه نمی‌دهد. اگر فعلاً کدی ندارید، از pass استفاده کنید.

عبارت ... (Ellipsis)

مثل pass اما معمولاً به‌عنوان placeholder استفاده می‌شود:

def my_function():
    ...  # معادل pass

match-case (پایتون ۳.۱۰+)

ساختار جدید پایتون، مشابه switch-case در زبان‌های دیگر:

day = "شنبه"

match day:
    case "شنبه":
        print("اولین روز کاری")
    case "جمعه":
        print("روز تعطیل")
    case _:
        print("روز کاری")

چند مقدار با |

day = "یکشنبه"

match day:
    case "شنبه" | "یکشنبه" | "دوشنبه" | "سه‌شنبه" | "چهارشنبه":
        print("روز کاری")
    case "پنجشنبه":
        print("نیمه کاری")
    case "جمعه":
        print("تعطیل")

تطبیق با الگو (Pattern Matching)

# تطبیق نوع
def process(data):
    match data:
        case int():
            return f"عدد صحیح: {data}"
        case str():
            return f"رشته: {data}"
        case list():
            return f"لیست با {len(data)} عنصر"
        case _:
            return "نامشخص"

print(process(42))       # عدد صحیح: 42
print(process("سلام"))   # رشته: سلام
print(process([1, 2]))   # لیست با 2 عنصر

تطبیق با مقدار (Binding)

# تطبیق ساختار
point = (3, 4)

match point:
    case (0, 0):
        print("مبدا")
    case (0, y):
        print(f"روی محور Y: {y}")
    case (x, 0):
        print(f"روی محور X: {x}")
    case (x, y):
        print(f"نقطه: ({x}, {y})")

عبارت شرطی در لیست (مقدماتی)

# اضافه کردن شرط در لیست
numbers = [1, 2, 3, 4, 5, 6]
even = [n for n in numbers if n % 2 == 0]
print(even)  # [2, 4, 6]

مثال کاربردی: دسته‌بندی

def categorize_bmi(bmi):
    return (
        "کم‌وزن" if bmi < 18.5
        else "نرمال" if bmi < 25
        else "اضافه‌وزن" if bmi < 30
        else "چاق"
    )

print(categorize_bmi(17))   # کم‌وزن
print(categorize_bmi(22))   # نرمال
print(categorize_bmi(28))   # اضافه‌وزن
print(categorize_bmi(35))   # چاق

خلاصه

ساختارتوضیح
Ternaryx if cond else y
passبلوک خالی
match-caseساختار switch (پایتون ۳.۱۰+)
_حالت پیش‌فرض در match

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

ابزارهای مرتبط