I decoratori in python

I decoratori sono strumenti del linguaggio Python che hanno in input una funzione ( o classe ) e ne modificano il comportamento, senza cambiare il codice sorgente.

Perché si chiamano decoratori? Sono detti decoratori perché incorporano la funzione o classe come in un pacco regalo, aggiungendo o personalizzando le sue funzionalità.
un esempio pratico di decoratori in Python

    Un esempio pratico

    Definisco una funzione decoratore che riceve in input una funzione.

    Al suo interno creo una sottofunzione (elabora) per stampare due stringhe a video ed eseguire la funzione passata come parametro.

    1. def decoratore(funzione):
    2. def elabora():
    3. print("1")
    4. funzione()
    5. print("2")
    6. return elabora

    Poi definisco una normale funzione (stampa)

    1. def stampa():
    2. print("Hello")

    Inserisco la funzione stampa() dentro il decoratore.

    1. stampa = decoratore(stampa)

    Infine la eseguo

    1. stampa()

    L'output dell'interprete python è il seguente

    1
    Hello
    2

    Quando lancio la funzione, viene eseguito automaticamente il decoratore.

    A sua volta il decoratore esegue la funzione.

    Il risultato finale include l'elaborazione del decoratore e della funzione.

    Metodo alternativo

    Per associare una funzione a un decoratore, posso anche indicarla nella riga precedente alla definizione della funzione stessa.

    In questo caso devo anteporre il simbolo @ al nome del decoratore.

    1. @decoratore
    2. def stampa():
    3. print("Hello")

    Non occorre fare altro.

    Quando chiamo la funzione, l'interprete esegue automaticamente il decoratore.

    1. stampa()

    Il risultato finale è sempre lo stesso

    1
    Hello
    2

    E così via.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base
    1. Il linguaggio Python
    2. Come installare Python sul PC
    3. Come scrivere un programma in Python
    4. Come usare Python in modalità interattiva
    5. Le variabili
    6. I numeri
    7. Gli operatori logici
    8. Le strutture iterative ( o cicli )
    9. Le strutture condizionali
    10. I file in python