Get started learning Python with DataCamp's free Intro to Python tutorial. Learn Data Science by completing interactive coding challenges and watching videos by expert instructors. Start Now!
This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join 11 million other learners and get started learning Python for data science today!
Good news! You can save 25% off your Datacamp annual subscription with the code LEARNPYTHON23ALE25 - Click here to redeem your discount
Decoratori
I decoratori ti permettono di fare semplici modifiche agli oggetti richiamabili come funzioni, metodi o classi. In questo tutorial ci occuperemo delle funzioni. La sintassi
è equivalente a:
Come avrai visto, un decoratore è solo un'altra funzione che prende una funzione e ne restituisce una. Ad esempio, potresti fare questo:
Questo farebbe ripetere una funzione due volte.
Puoi anche far cambiare l'output
cambiare l'input
e fare controlli.
Diciamo che vuoi moltiplicare l'output per una quantità variabile. Potresti definire il decoratore e usarlo come segue:
Puoi fare qualsiasi cosa con la vecchia funzione, persino ignorarla completamente! I decoratori avanzati possono anche manipolare la stringa di documentazione e il numero di argomenti. Per alcuni decoratori fantasiosi, vai su http://wiki.python.org/moin/PythonDecoratorLibrary.
Esercizio
Crea una fabbrica di decoratori che restituisce un decoratore che decora funzioni con un argomento. La fabbrica dovrebbe prendere un argomento, un tipo, e poi restituire un decoratore che fa in modo che la funzione controlli se l'input è del tipo corretto. Se è sbagliato, dovrebbe stampare("Bad Type") (In realtà, dovrebbe sollevare un errore, ma il sollevamento di errori non è in questo tutorial). Usare isinstance(object, type_of_object) o type(object) potrebbe aiutare.
This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join over a million other learners and get started learning Python for data science today!
