Menu
Coddy logo textTech

תחביר Python

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

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

לדוגמה,

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

@my_decorator
def my_function():
	print("Inside my_function.")

כשנריץ את my_function(), נראה פלט כזה:

Before function is called.
Inside my_function.
After function is called.

הדבר מראה שפונקציית הדקורטור my_decorator הצליחה לשנות את ההתנהגות של my_function על ידי הוספת קוד נוסף לפניה ואחריה.

challenge icon

אתגר

קל

נתון לך קוד עבור הפונקציה add.

המשימה שלך היא לכתוב מעטר פונקציות בשם debug, כמו בשיעור הקודם, אבל עם כמה תוספות:

  • הוסף את מעטר הפונקציות debug ל־add באמצעות הסימן @.
  • פונקציית debug צריכה לתמוך בארגומנטים של פונקציות.

כדי לתמוך בפונקציה עם ארגומנטים במעטר,

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

דוגמה:

עבור קריאה לפונקציה add(2, 3), יודפס,

Calling add with arguments (2, 3)
add returned: 5

נסו בעצמכם

# כתבו כאן קוד


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

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

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