إضافة سلوك للدالة بإستخدام 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