Definizione: il decoratore è un modello di design in Python. È una funzione che prende un'altra funzione come argomento, aggiungi alcune funzionalità senza modificarla e restituisce un'altra funzione.
Questo si chiama usando "(@)" e posizionato prima di definire una funzione che vogliamo decorare.
sintassi:
@Nome del decoratore
Definizione della funzione
Per comprendere i decoratori, dobbiamo conoscere i concetti di seguito.
Le funzioni sono oggetti di prima classe. Significa che una funzione può essere passata come argomento, può essere restituita da un'altra funzione, può essere assegnata a una variabile, può essere definita in un'altra funzione. Per una migliore comprensione, vedere gli esempi di seguito.
Qui la funzione di incremento è passata come argomento
Esempio 1.PY:
Produzione:
>> Python Esempio1.Py
Esempio2.PY:
Produzione:
>> Esempio Python2.Py
Qui la funzione Say_wish è tornata dalla funzione dei desideri
Esempio3.PY:
Produzione:
>> Python Esempio3.Py
Esempio4.PY:
Produzione:
>> Python Esempio4.Py
Chiusura:
Python consente a una funzione nidificata di accedere all'ambito esterno della funzione di rallentamento.
Def Greeting (Messaggio):Esempio5.PY:
Produzione:
>> Esempio Python5.Py
Dopo aver compreso i concetti di cui sopra ora, scriveremo un esempio di decoratore.
Ex1: Qui, decoramo la funzione del messaggio. Stampa il msg all'interno **** senza modificare la funzione originale, i.e., funzione messaggio.
#DECORATOR AvvioEsempio6.PY:
Produzione:
>> Python Esempio6.Py
Nella forma più semplice, possiamo posizionare il decoratore sopra la definizione della funzione e chiamare la funzione come mostrato di seguito:
Qui qualunque corda vogliamo decorare all'interno ***, usa questo decoratore.
Produzione:
Decoratore multiplo:
Possiamo avere un decoratore multiplo per una singola funzione. Qui il decoratore viene applicato nell'ordine che abbiamo chiamato.
sintassi:
@decoratore2
@decorator1
Definizione della funzione
Qui verrà applicato il primo decoratore, quindi il 2 ° decoratore.
Passando argomenti alle funzioni del decoratore:
Possiamo passare argomenti alla funzione Wrapper. Gli argomenti passati alla funzione per la quale vogliamo decorare.
Ex:
def deco_wish (funzione):Esempio7.PY:
Produzione:
>> Python Esempio7.Py
Passa il numero variabile di argomenti alla funzione del decoratore:
Possiamo passare un numero qualsiasi di argomenti usando *args (argomenti non chiave come numeri) e ** kwargs (argomenti di parole chiave come un dizionario). Entrambi sono argomenti posizionali e memorizza gli argomenti nelle variabili Args e Kwargs.
Nota: qui, possiamo usare qualsiasi nome anziché Args e Kwargs, ma questi nomi sono consigliati di utilizzare.
Ex:
def dec_var_args (funzioni):Esempio8.PY:
Produzione:
>> Python Esempio8.Py
Ex2: supponiamo di avere 2 funzione
Function1: calcola la somma dei numeri dall'elenco dato
Funzione2: moltiplicare ogni numero per 2 e aggiungerli all'elenco dato di numeri
Se vogliamo calcolare il tempo impiegato da ciascuno per l'esecuzione, possiamo farlo in 2 modi
Vedi il codice di seguito risolto usando il decoratore:
#DECORATOR AvvioEsempio9.PY:
Produzione:
>> Esempio Python9.Py
Il decoratore sopra può essere utilizzato per il calcolo del tempo di esecuzione per una qualsiasi delle funzioni. Usando un decoratore, possiamo evitare il codice ripetuto quando abbiamo un requisito per il calcolo del tempo di esecuzione per posizionare il decoratore sopra la definizione della funzione.
Conclusione:
I decoratori cambiano la funzionalità di una funzione/metodo senza modificare il codice originale della funzione. Usando questo, possiamo evitare di scrivere codice ripetuto. Conoscere il concetto di decoratore ci renderà forti in Python. Possiamo usare il decoratore nelle custodie seguenti: