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