سوال شماره 4745 چندگزینه‌ای
آزمون رایگان پایتون فنی و حرفه ای
کدام یک از قطعات کد زیر به درستی مفهوم Decorator را در پایتون پیاده‌سازی می‌کند؟

گزینه‌ها:

  • 1. @my_decorator def say_hello(): print('سلام')
  • 2. class MyDecorator: def __init__(self, func): self.func = func def __call__(self): print('قبل از اجرا') self.func() print('بعد از اجرا')
  • 3. def my_decorator(func): def wrapper(): print('قبل از اجرای تابع') func() print('بعد از اجرای تابع') return wrapper ✓ صحیح
  • 4. import functools @functools.wraps(func) def decorator(func): return func

پاسخ صحیح:

  • def my_decorator(func): def wrapper(): print('قبل از اجرای تابع') func() print('بعد از اجرای تابع') return wrapper

توضیحات:

گزینه اول به درستی مفهوم Decorator را پیاده‌سازی می‌کند. در این کد، تابع my_decorator یک تابع دیگر (func) را دریافت کرده و یک تابع wrapper برمی‌گرداند که قبل و بعد از اجرای func، عملیات اضافی انجام می‌دهد. این الگوی استاندارد برای ایجاد دکوریتورها در پایتون است که امکان افزودن قابلیت‌های جدید به توابع موجود بدون تغییر کد اصلی آنها را فراهم می‌کند.