Un decoratore è una funzione che avvolge un'altra funzione per aggiungere comportamento, senza modificare il codice originale. Viene applicato con la sintassi @decorator sopra una funzione — un modo pulito per aggiungere problemi trasversali come logging, timing, caching o controllo degli accessi.
Come funzionano i decoratori
():
():
()
result = func(*args, **kwargs)
()
result
wrapper
():
()
greet()
