Le funzioni scritte in Python sono considerate oggetti di prima classe. Lo stato equivalente degli altri oggetti è dato alle funzioni in Python. Le funzioni possono essere create e distrutte dinamicamente, assegnate a variabili, salvate in collezioni, fornite come argomenti e altro ancora. Il termine "funzioni nidificate", a volte noto come "funzioni interne", si riferisce a funzioni definite all'interno delle altre funzioni.
È una funzione nidificata chiamata Build Message. La sua funzione principale esterna è dove è definita e chiamata.
Nella sua forma più elementare, la chiusura è solo una funzione nidificata che ha accesso a una variabile gratuita rimasta dopo che l'esecuzione di una funzione di allega è completa. Una chiusura di Python ha queste tre proprietà:
Si dice che qualsiasi variabile che non sia legata all'ambito locale sia gratuito. La parola chiave non locale è richiesta affinché le chiusure funzionino con variabili immutabili come stringhe e numeri interi. Le chiusure di Python offrono una sorta di mascheramento dei dati e assistono a evitare l'uso di variabili globali.
Portata delle variabili
Dobbiamo anche conoscere l'ambito variabile Python per comprendere le chiusure in modo più completo. L'ambito è una tale regione in cui la variabile è osservabile. È possibile utilizzare solo l'intervallo specificato di una variabile. Secondo i tre diversi ambiti, le variabili possono spesso essere assegnate in tre posizioni separate:
Perché usare le chiusure?
I motivi principali per cui assumiamo decoratori sono delineati nel seguente elenco:
Quando Python crea la chiusura?
Python crea un nuovo ambito ogni volta che viene invocata una funzione. Python produce inoltre una nuova chiusura se quella funzione ne produce una.
Crea una funzione denominata moltiplicatore che produce prima una chiusura. La moltiplicazione di due input è ciò che la funzione moltiplicatore restituisce. Ma utilizza una chiusura al posto. Aggiungi tre chiamate alla funzione moltiplicatore successiva. Tre chiusure vengono prodotte chiamando queste funzioni. Un numero viene moltiplicato per 2, 4 e 5 per ogni funzione. Quindi, eseguire le funzioni delle chiusure.
Esempio 1:
Per invocare una funzione interna dall'esterno della funzione esterna, dobbiamo prima capire come. Questi metodi possono restituire un valore. Qui, "T" e "U" sono variabili locali della funzione f ().
Poiché le variabili "T" e "U" non sono più accessibili dopo aver eseguito H = F (), tutte le variabili di F (Local) sono sparite. Tuttavia, manteniamo ancora il valore "t" che è stato restituito e salvato in H. Potremmo quindi essere in grado di far restituire la funzione esterna della funzione interna. Le funzioni di prima classe di Python lo rendono fattibile per questo. Implica che, poiché Python interpreta le funzioni come valori, puoi assegnarle alle variabili, fornire loro come argomenti di funzione o avere un'altra funzione restituirli.
Esempio 2:
Questo esempio mostra che la funzione interna "G" viene restituita dalla funzione esterna f (t).
La funzione g () viene ora restituita dall'espressione f (t). Assegnando il valore di "g" a "h" quando scriviamo h = f (i), "h" ora può essere considerato come "g" e prendere l'argomento di G. H (j) è equivalente a chiamare "g" di conseguenza (j).
Esempio 3:
La funzione g (), non un valore particolare di ciò, è ciò che f (t) restituisce. Prendi in considerazione questa istanza per questo e scrivi quanto segue:
Questo codice restituisce un errore. Significa che abbiamo riscontrato un errore. Non possiamo usare "H" per invocare una funzione poiché restituiamo il risultato di G (u) da f (t), che è un motivo per l'errore.
Esempio 4:
Non dobbiamo mantenere f (a) in "h". L'alternativa è chiamare f (a) direttamente (b). Considera la seguente illustrazione:
La necessità di fare la differenza tra f (a, b) e f (a) deve essere sempre tenuta a mente (b). Richiede due parametri per chiamare la funzione f (a, b). La funzione f (a) (b), d'altra parte, è una serie di funzioni nidificate, ognuna delle quali accetta solo un input. Conosciuta come una funzione unaria, questo tipo di funzione accetta solo un input. Di conseguenza, f (a) (b) è una serie di due funzioni uniche nidificate. Quindi, f (a) viene valutato per la prima volta. Per incatenare queste funzioni insieme, f (a) dovrebbe restituire una funzione. Qui, restituisce la funzione interna "G". Di conseguenza, f (a) (b) = g (b).
Esempio 5:
L'uso di una serie più lunga di funzioni Unary è semplicemente possibile estendendo l'approccio attuale. In questo caso anche le tre funzioni uniche nidificate. La prima funzione, f (t), ha una funzione al suo interno chiamata g (u) e g (u) ha una funzione al suo interno chiamata h (v). Ogni funzione interna viene restituita dalla sua funzione esterna.
Qui, definiamo le funzioni. Queste funzioni restituiscono i valori. Successivamente, inizializziamo tre variabili e assegniamo loro tre diversi numeri interi. Quindi, chiamiamo queste variabili gli attributi della funzione.
Esempio 6:
Supponiamo che ci siano alcune variabili non locali nella funzione esterna. vediamo cosa succede.
Eseguilo dimostra che funziona senza intoppi e che G (U) ha accesso sia a "T" che a "V". Tuttavia, come è persino concepibile? Ora che siamo al di fuori del Purview (T) di F, quindi "T" e "V" non dovrebbero essere raggiungibili dopo che F (T) viene eseguita. Perché G (u) è ancora in grado di accedervi? È per il motivo che G (u), la funzione interiore, è ora una chiusura.
Esempio 7:
Modifichiamo la funzione interna utilizzata in questa istanza.
Se ciò accade, non si può più dire che sia una chiusura. La spiegazione è che G (u) non accede alle variabili non locali "T" e "V". Quindi, G (u) non è tenuto a registrarli.
Esempio 8:
In questo caso, vedremo se impostiamo i valori di due parametri delle funzioni uguali, quindi quella funzione è impostata per essere una chiusura o no.
Ancora una volta, "T" è solo necessario per inizializzare "U" in questo caso. Pertanto, g (u) non è una chiusura perché "g" non ha bisogno di dichiarare "t".
Conclusione
In questa guida, abbiamo parlato della chiusura di Python. Abbiamo anche eseguito i diversi codici relativi a questo argomento. Richiediamo una funzione all'interno della chiusura per definire quanto segue:
In altre parole, una funzione e un ambito ampliato con variabili libere sono entrambi considerati chiusure. È necessario chiamare la funzione esterna per restituire la chiusura dopo aver dichiarato la chiusura per inizializzarla.