Theme
Primary Color

إضافة سلوك للدالة بإستخدام Decorator

ال Decorator بتستقبل دالة وترجع دالة بتضيف خطوات حول تنفيذها

تنفيذ خطوة قبل الدالة وبعدها

الدالة الداخلية بتشغل الأصل وبتعيد نتيجته للمستدعي

from functools import wraps

def announce(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        print("Start")
        result = func(*args, **kwargs)
        print("End")
        return result
    return wrapper

@announce
def add(a, b):
    return a + b

print(add(2, 3))

النتيجة

Start
End
5

الحفاظ على إسم الدالة

ال wraps بتنقل بيانات الدالة الأصلية للدالة المغلفة

from functools import wraps

def decorate(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper

@decorate
def greet():
    return "Hello"

print(greet.__name__)
print(greet())

النتيجة

greet
Hello
python شرح