TGViewer
PyCoders (پایتون) PyCoders (پایتون) @python_rd · 4.11K subscribers
Post #2181 809
🌐 دکوریتورها (Decorators) توی پایتون مثل یک «روکش» برای توابع هستن. فرض کن می‌خوای به چند تا تابع، قابلیت لاگ‌گیری یا زمان‌سنجی اضافه کنی بدون اینکه کدهای اصلیشون رو تغییر بدی. دکوریتور این کار رو خیلی تمیز برات انجام می‌ده و کدت رو ماژولار نگه می‌داره.

🔹 مثلاً این کدِ یک زمان‌سنج ساده‌ست که نشون می‌ده تابع چقدر طول می‌کشه اجرا بشه:

import time

def timer(func):
def wrapper():
start = time.time()
func()
print(f"زمان اجرا: {time.time() - start:.4f} ثانیه")
return wrapper

@timer
def say_hello():
time.sleep(1)
print("سلام به دنیای پایتون!")

say_hello()

🔹 می‌بینی که چطور با قرار دادن @timer بالای تابع say_hello، بدون اینکه حتی یک خط از منطق داخل خودِ تابع رو دستکاری کنیم، قابلیت زمان‌سنجی بهش اضافه شد. هر جا دیدی یه چیزی با @ شروع می‌شه و بالای تعریف یه تابع نشسته، بدون که داره اون تابع رو با قابلیت‌های جدید "دکور" می‌کنه.

🐍 @python_rd
  • 🔥 2
  • ❤ 1
More from @python_rd
  1. Oct 13, 2026کوییز پایتون 🔆 خروجی اجرای کد زیر چیست؟ t = (1, 2, [3, 4]) try: t[2] += [5] except TypeEr…
  2. Oct 13, 2026🔆 راز مکانیزم پیاده‌سازی و تغییر جهت NaN در الگوریتم مرتب‌سازی پایتون (Timsort) 🔹 باگ ری…
  3. Oct 13, 2026🔆 حذف تاریخی GIL از پایتون (Free-threaded Python) 🔹 یک رویداد تاریخی: حذف قفل مفسر (GIL)…
  4. Oct 11, 2026🔆 مدیریت تمیز منابع با Context Managerهای سفارشی (contextlib) 🔹 ساخت Context Managerها م…
  5. Oct 10, 2026🔆 چرا برای داده‌های حجیم نباید از return استفاده کنی؟ 🔹 وقتی یک تابع لیست بزرگی از داده‌…
  6. Oct 10, 2026🔆 خروجی این تکه کد چیه؟ def add_item(item, lst=[]): lst.append(item) return lst print(add…
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 →