È tempo di parlare di decoratore.
Un altro termine chiave in Python, e in realtà abbiamo già visto decoratore.
Ti ricordi quando stavamo costruendo le classi, ti ho insegnato che c'era un metodo di classe e un metodo
statico e ho detto, ehi, non preoccuparti di questo.
Di questo parleremo più avanti.
Bene, questo è ora l'aspetto del decoratore successivo in questo modo.
Avevano la chiocciola e poi una sorta di nome che la seguiva.
Ma per comprendere appieno cosa sono i decoratori, dobbiamo parlare delle funzioni in Python e del motivo per cui
sono così potenti.
Questa è la cosa bella di Python in Python le funzioni sono ciò che chiamiamo cittadini di prima classe.
Cioè, possono essere passati in giro come variabili.
Possono essere un argomento all'interno di una funzione.
Si comportano proprio come, beh, variabili.
Lascia che te lo mostri, se creo una funzione alone, che francamente è completamente inutile perché tutto ciò
che fa è salutare.
Se faccio questo.
Ricorda, ho detto che le funzioni sono praticamente solo variabili in Python.
Ancora una volta, qualcosa che non è sempre il caso di tutti i linguaggi di programmazione.
Quindi, se volessi, posso dire che Grete è uguale a ciao.
Quindi se stampo Grete.
E io gestisco questo.
Ricevo ciao, cosa succede se passo il saluto in questo modo, se eseguo questo?
Bene, ottengo la posizione della funzione in memoria, quindi dovrei usare la griglia come questa ed eseguirla correttamente.
Dobbiamo chiamare la funzione ciao.
OK, e se lo facessimo?
E se dico elimina?
Ciao, una tastiera e Python che cancellano quella funzione.
Cosa pensi che succederà?
Vediamo se eseguo questo.
Hmmm, è quello che ti aspettavi?
Ti aspettavi che l'avidità funzionasse ancora?
La cosa interessante di Python è che creo hello e questo è ora creato in memoria,
quando arriviamo alla riga quattro, dico, hey, greet indicherà ciao.
Quindi ciao può ancora essere chiamato qui.
Posso ancora dire ciao perché ciao è il nome della funzione che punta a quella posizione in memoria.
Ma quando elimino ciao, tutto ciò che fa è dire, ehi, eliminerò questa funzione, questo nome fa riferimento a questa
funzione che è in memoria.
Tuttavia, poiché salutare un'intera variabile non punta ancora a questa funzione.
Cancellerò la parola ciao, quindi se vado ciao in questo modo.
Ho intenzione di ottenere un nome d'aria ciao non è definito, tuttavia.
La griglia punta ancora in memoria a questa posizione, quindi Python è abbastanza intelligente da dire, ehi, mi hai
detto di eliminare ciao, eliminerò il nome ciao, ma non eliminerò la
funzione perché l'avidità è ancora indicandolo.
Quindi le funzioni in Python agiscono proprio come le variabili fanno i loro cittadini di prima classe.
Possiamo anche passare funzioni.
Intorno agli argomenti, giusto, se dico ciao e poi questo ciao riceve un'altra funzione che
chiama, diciamo.
Funziona così.
Bene, posso creare una funzione griglia, diciamo definire griglia.
E questa funzione verrà semplicemente stampata.
Ancora qui.
Ora, qui dentro, se chiamo ciao.
Insieme a.
Greta.
O solo per essere chiari, diciamo solo un uguale a ciao saluti, e se stampo a, cosa succederà?
Funziona ancora perché quello che succede è che dico, ehi, chiamo la funzione ciao, OK, sto
chiamando la funzione ciao con l'argomento.
Grande.
Quindi andiamo qui e diciamo, ehi, esegui la funzione e quale funzione vogliamo chiamare questa funzione.
Giusto, perché abbiamo queste parentesi.
Quindi passiamo a quale funzione è che nel nostro caso è l'avidità.
Quindi andiamo qui e diciamo, ehi, stampa questo, non dobbiamo chiamarlo qui perché la funzione Halo lo
chiama per noi.
Allora perché ti ho insegnato tutto questo?
Ciò che ha a che fare con i decoratori di decoratori è possibile solo grazie a
queste caratteristiche, questa capacità delle funzioni di agire come variabili, agire come cittadini di prima classe e Python.
E quando iniziamo a conoscere i decoratori sotto il cofano, stanno usando questo potere di funzioni.
Di tanto in tanto nei prossimi video, parleremo di come creare i nostri,
cosa significano ed espandere questa idea di decoratore.
Ma ecco la forma abbreviata di cosa fa il decoratore che sovraccarica la nostra funzione se avessimo la nostra,
diciamo ciao, funzione qui.
Aggiungendo una sorta di decoratore come questo, possiamo potenziare la nostra funzione e aggiungere funzionalità extra.
Fa sapere all'interprete Python che voglio che questa funzione hello abbia alcune funzionalità extra, ma esploriamo un po' di
più questo argomento nel prossimo video.