🔹 اگر توی پایتون کدی داری که بر اساس نوع داده ورودی (int, list, str و...) رفتارهای متفاوتی نشون میده، بهجای نوشتن if-elif-else های طولانی و کثیف، میتونی از دکوراتور فوقالعاده singledispatch استفاده کنی!
from functools import singledispatch
# تابع اصلی برای حالت پیشفرض
@singledispatch
def process(data):
raise NotImplementedError("نوع داده پشتیبانی نمیشود!")
# رفتار تابع وقتی ورودی string است
@process.register(str)
def _(data):
return f"متن: {data.strip().upper()}"
# رفتار تابع وقتی ورودی int است
@process.register(int)
def _(data):
return f"عدد: {data * 10}"
# رفتار تابع وقتی ورودی list است
@process.register(list)
def _(data):
return f"تعداد عناصر لیست: {len(data)}"
# 🧪 تست:
print(process(" python ")) # خروجی: متن: PYTHON
print(process(5)) # خروجی: عدد: 50
print(process([1, 2, 3])) # خروجی: تعداد عناصر لیست: 3
🔹به چه دردی میخوره؟
کدت کاملاً تمیز، ماژولار و بر اساس اصل Open/Closed در SOLID میشه. هر زمان نوع داده جدیدی اضافه شد، کافیه یک تابع جدید @register کنی بدون اینکه کد قبلی رو دستکاری کنی!
🐍 @python_rd