def funzione_decoratore(funzione_parametro):
def wrapper():
""" nome convenzionale - wrapper significa 'incarto, confezione' """
print("... codice da eseguire prima di 'funzione_parametro' ...")
funzione_parametro()
print("... codice da eseguire dopo di 'funzione_parametro' ...")
return wrapper
def mia_funzione():
print("Hello World!")
@funzione_decoratore
def mia_funzione():
print("Hello World!")
mia_funzione()
# output:
... codice da eseguire prima di funzione_parametro ...
hello world!
... codice da eseguire dopo di funzione_parametro ...
def mia_funzione():
print("Hello World!")
>>> print(mia_funzione.__name__)
mia_funzione
mia_funzione = funzione_decoratore(mia_funzione)
mia_funzione()
# output:
... codice da eseguire prima di funzione_parametro ...
Hello World!
... codice da eseguire dopo di funzione_parametro ...