תחביר 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 על ידי הוספת קוד נוסף לפניה ואחריה.
אתגר
קלנתון לך קוד עבור הפונקציה 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 אונליין