Sintassi di Python
Lezione 6 di 12 del corso Decoratori in Python di Coddy.
Nella lezione precedente abbiamo visto come creare decoratori di funzioni; tuttavia, Python offre un modo molto più elegante per ottenere questa funzionalità usando il simbolo @.
Per esempio,
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.")Quando eseguiamo my_function(), vedremo un output simile a questo:
Before function is called.
Inside my_function.
After function is called.Questo mostra che la funzione decoratrice my_decorator è stata in grado di modificare il comportamento di my_function aggiungendo del codice prima e dopo la sua chiamata.
Sfida
FacileTi viene fornito il codice di una funzione add.
Il tuo compito è scrivere un decoratore di funzione chiamato debug, come nell’ultima lezione, ma con alcune aggiunte:
- Applica il decoratore di funzione
debugaaddusando il simbolo@. - La funzione di debug dovrebbe supportare gli argomenti della funzione.
Per supportare le funzioni con argomenti in un decoratore,
def my_decorator(func):
def wrapper(a, b):
print("Before function is called.")
func(a, b)
print("After function is called.")
return wrapperEsempio:
Per una chiamata alla funzione add(2, 3), dovrebbe essere stampato,
Calling add with arguments (2, 3)
add returned: 5Provalo tu
# Scrivi il codice qui
def add(a, b):
return a + bTutte le lezioni di Decoratori in Python
Esercitati da solo: Compilatore Python online