TGViewer
برنامه نویسی برنامه نویسی @rezadolati01 · 5.35K subscribers
Post #4683 313

Forwarded from PyCoders (پایتون)

🔆 تکنیک ناشناخته و حرفه‌ای functools.singledispatch (اورلود کردن توابع در پایتون بدون if/elseهای طولانی!)

​🔹 چطوری تو پایتون تابع Overloading تمیز بنویسیم؟

​خیلی وقت‌ها پیش میاد که میخوایم یه تابع بستگی به اینکه چه جنس ورودی‌ای (String, List, Dict...) بهش میدیم، رفتار متفاوتی داشته باشه. روش مبتدیانه چیه؟ نوشتن یه سلسله if isinstance(...) طولانی!

​اما روش سینیورها توی پایتون استفاده از singledispatch از کتابخونه استاندارد functools هست.

from functools import singledispatch

@singledispatch
def process_data(data):
raise NotImplementedError("این تایپ پشتیبانی نمیشه!")

@process_data.register(str)
def _(data):
return f"متن پردازش شد: {data.upper()}"

@process_data.register(list)
def _(data):
return f"لیست پردازش شد با طول: {len(data)}"

@process_data.register(dict)
def _(data):
return f"کلیدهای دیکشنری: {list(data.keys())}"

# تست تابع
print(process_data("hello")) # متن پردازش شد: HELLO
print(process_data([1, 2, 3])) # لیست پردازش شد با طول: 3

🔹به چه دردی میخوره؟

کد بسیار کپسوله، خلوت و خوانا میشه.
اصل Open/Closed رعایت میشه (میتونی بعداً بدون دست زدن به تابع اصلی، تایپ جدید اضافه کنی).

🐍 @python_rd
More from @rezadolati01
  1. Oct 13, 2026🌐 دانستنی فنی 🔸 عدد ۵۰۰,۰۰۰ دلار برای اصلاح یک خط کد دیتابیس! 🔸 آیا می‌دانستید در سیستم…
  2. Oct 13, 2026🌐 خروجی دقیق قطعه کد زیر در محیط استاندارد مرورگر/Node.js چیست؟ async function test() { c…
  3. Oct 13, 2026🌐 آمار رسمی Stack Overflow و GitHub از وضعیت هوش مصنوعی در سال جاری: 🔸طبق گزارش رسمی پیم…
  4. Oct 13, 2026🌐 ۴ ابزار ضروری و رایگان که کارتون رو چند برابر سریع‌تر می‌کنه: 🔹 1. Ray.so کدهاتون رو ب…
  5. Oct 13, 2026🌐 بهینه‌سازی و کدهای خواناتر در پایتون با Walrus Operator (:=) 🔸 آشنایی با Walrus Operat…
  6. Oct 11, 2026🌐 چرا جستجو در دیتابیس بدون Index کند است؟ (Sequential Scan) 🔸 ​وقتی جدولی در دیتابیس (م…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →