Menu
Coddy logo textTech

שימוש בדקורטורים

שיעור 5 מתוך 12 בקורס דקורטורים ב-Python של Coddy.

ב-Python, דקורטור הוא פונקציה שמקבלת פונקציה אחרת כקלט ומרחיבה את ההתנהגות של פונקציית הקלט בלי לשנות במפורש את הקוד שלה. דקורטורים הם דרך עוצמתית לשנות או לשפר את ההתנהגות של פונקציות באופן גמיש וניתן לשימוש חוזר.

הנה דוגמה לפונקציית דקורטור פשוטה:

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

אתגר

קל

כתבו פונקציית דקורטור בשם 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 הן פונקציות ללא ארגומנטים.

נסו בעצמכם

כל השיעורים ביחידה דקורטורים ב-Python

תרגלו בעצמכם: קומפיילר Python אונליין