Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

Decorators Usage

الدرس 5 من 12 في دورة المزخرفات في Python على Coddy.

في لغة بايثون، يُعد الـ decorator (المُزخرف) دالة تأخذ دالة أخرى كمدخل وتوسع سلوك الدالة المدخلة دون تعديل كودها بشكل صريح. تُعد المُزخرفات وسيلة قوية لتعديل أو تحسين سلوك الدوال بطريقة مرنة وقابلة لإعادة الاستخدام.

إليك مثال على دالة مُزخرف بسيطة:

def my_decorator(func):
    def wrapper():
        print("Before the function is called.")
        func()
        print("After the function is called.")
    return wrapper

في هذا المثال، تأخذ الدالة my_decorator دالة أخرى func كمدخل وتُعيد دالة جديدة تسمى wrapper.

تضيف الدالة wrapper بعض السلوك قبل وبعد استدعاء الدالة func.

challenge icon

التحدي

سهل

اكتب دالة مزخرف (decorator) تسمى debug تأخذ دالة func كمدخل وتعيد دالة جديدة تطبع اسم func والقيمة التي تعيدها func في كل مرة يتم استدعاؤها فيها.

للحصول على اسم func، استخدم func.__name__.

إليك مثال على استخدام مزخرف debug:
 

def hello():
    return "Hello"

debug_hello = debug(hello)
debug_hello()

في هذا المثال، نستخدم مزخرف debug لتغليف دالة hello وإنشاء دالة جديدة تسمى debug_hello. عندما نستدعي debug_hello()، سيقوم المزخرف بطباعة:

Calling hello
hello returned: Hello

يمكنك افتراض أن جميع الدوال الممرة إلى debug هي دوال بدون وسائط (no-arguments functions).

جرّب بنفسك

جميع دروس المزخرفات في Python

تدرّب بنفسك: مترجم Python عبر الإنترنت