Funksjonene skrevet i Python regnes som førsteklasses objekter. Tilsvarende status for de andre objektene er gitt til funksjoner i Python. Funksjoner kan opprettes og ødelegges dynamisk, tilordnet variabler, lagret i samlinger, levert som argumenter og mer. Begrepet "nestede funksjoner", noen ganger kjent som "indre funksjoner", refererer til funksjoner som er definert i de andre funksjonene.
Det er en nestet funksjon som heter Build Message. Den ytre hovedfunksjonen er der den er definert og kalt.
I sin mest grunnleggende form er lukking bare en nestet funksjon som har tilgang til en gratis variabel til overs etter utførelsen av en vedlagt funksjon er fullført. En python -nedleggelse har disse tre egenskapene:
Enhver variabel som er ubundet i det lokale omfanget sies å være gratis. Det ikke-lokale nøkkelordet er nødvendig for at nedleggelser skal fungere med uforanderlige variabler som strenger og heltall. Python -stenginger tilbyr en slags datamasking og hjelper til med å unngå bruk av globale variabler.
Omfang av variabler
Vi må også lære om Python -variabelt omfang for å forstå nedleggelsene mer fullstendig. Omfanget er en slik region der variabelen er observerbar. Bare det spesifiserte området for en variabel kan brukes. I henhold til de tre forskjellige omfangene, kan variabler ofte tildeles på tre separate steder:
Hvorfor bruke stenginger?
De viktigste årsakene til at vi ansetter dekoratører er skissert i følgende liste:
Når skaper Python nedleggelsen?
Python skaper et nytt omfang hver gang en funksjon påkalles. Python produserer i tillegg en fersk lukking hvis den funksjonen produserer en.
Lag en funksjon som heter multiplikator som produserer en nedleggelse først. Multiplikasjonen av to innganger er hva multiplikatorfunksjonen returnerer. Men det bruker en nedleggelse i stedet for det. Legg til tre samtaler i multiplikatorfunksjonen neste. Tre nedleggelser produseres ved å kalle disse funksjonene. Et tall multipliseres med 2, 4 og 5 etter hver funksjon. Kjør deretter nedleggelsesfunksjonene.
Eksempel 1:
For å påkalle en indre funksjon fra utenfor den ytre funksjonen, må vi først finne ut hvordan. Disse metodene kan returnere en verdi. Her er “T” og “U” lokale variabler av funksjonen f ().
Siden variablene “T” og “U” ikke lenger kan nås etter å ha kjørt H = F (), er alle f (lokale) variabler borte. Imidlertid beholder vi fortsatt "T" -verdien som ble returnert og lagret i H. Vi kan dermed være i stand til å få den ytre funksjonen til å returnere innsidenfunksjonen. Pythons førsteklasses funksjoner gjør det mulig for dette. Det innebærer at fordi Python tolker funksjonene som verdier, kan du tilordne dem til variablene, gi dem som funksjonsargumenter, eller ha en annen funksjon returner dem.
Eksempel 2:
Dette eksemplet viser at den indre funksjonen "G" returneres av den ytre funksjonen f (t).
Funksjonen g () blir nå returnert av uttrykket f (t). Ved å tilordne verdien av “G” til “H” når vi skriver H = F (i), kan “H” nå betraktes som “G” og ta Gs argument. H (j) tilsvarer å kalle “g” som et resultat (j).
Eksempel 3:
Funksjonen g (), ikke en bestemt verdi av det, er det f (t) returnerer. Ta dette tilfellet i betraktning for dette, og skriv følgende:
Denne koden returnerer en feil. Det betyr at vi møtte en feil. Vi kan ikke bruke “H” for å påkalle en funksjon siden vi returnerer resultatet av G (u) fra F (t), som er en grunn til feilen.
Eksempel 4:
Vi trenger ikke å holde f (a) i “h”. Alternativet er å ringe F (a) direkte (b). Tenk på følgende illustrasjon:
Behovet for å gjøre en forskjell mellom f (a, b) og f (a) må alltid huskes (b). Det krever to parametere for å kalle funksjonen f (a, b). Funksjonen f (a) (b) er derimot en serie med nestede funksjoner, som hver bare godtar en inngang. Kjent som en unary -funksjon, godtar denne typen funksjoner bare en inngang. Følgelig er f (a) (b) en serie med to nestede unary -funksjoner. Så f (a) blir først vurdert. For å kjede disse funksjonene sammen, bør f (a) returnere en funksjon. Her returnerer den den interne funksjonen “G”. Følgelig f (a) (b) = g (b).
Eksempel 5:
Bruken av en lengre serie unary -funksjoner er ganske enkelt mulig ved å utvide den nåværende tilnærmingen. De tre nestede unary -funksjonene kan også sees i dette tilfellet. Den første funksjonen, f (t), har en funksjon innen den kalt g (u), og g (u) har en funksjon inne i den kalt h (v). Hver indre funksjon returneres etter den ytre funksjonen.
Her definerer vi funksjonene. Disse funksjonene returnerer verdiene. Deretter initialiserer vi tre variabler og tildeler dem tre forskjellige heltall. Deretter kaller vi disse variablene funksjonene til funksjon.
Eksempel 6:
Anta at det er noen ikke -lokale variabler i den ytre funksjonen. La oss se hva som skjer.
Å kjøre den demonstrerer at den fungerer uten problemer og at g (u) har tilgang til både “T” og “V”. Hvordan er det imidlertid til og med tenkelig? Nå som vi er utenfor Fs Review (T), bør ikke "T" og "V" kunne nås etter at F (t) utføres. Hvorfor er G (u) fremdeles i stand til å få tilgang til dem? Det er av grunnen til at G (u), den indre funksjonen, nå er en nedleggelse.
Eksempel 7:
La oss endre den interne funksjonen som brukes i dette tilfellet.
Hvis det skjer, kan det ikke lenger sies å være en nedleggelse. Forklaringen er at G (u) ikke får tilgang til de ikke -lokale variablene “T” og “V”. Derfor er ikke g (u) pålagt å registrere dem.
Eksempel 8:
I dette tilfellet vil vi se om vi angir verdiene til to parametere for funksjonene som er like, så er den funksjonen satt til å være en lukking eller ikke.
Nok en gang er “T” bare nødvendig for å initialisere “u” i dette tilfellet. Derfor er ikke g (u) en nedleggelse fordi "g" trenger ikke å erklære "t".
Konklusjon
I denne guiden snakket vi om Python -nedleggelsen. Vi utførte også de forskjellige kodene relatert til dette emnet. Vi krever en funksjon innenfor nedleggelsen for å definere følgende:
Med andre ord, en funksjon og et utvidet omfang med frie variabler blir begge vurdert stenginger. Å kalle den ytre funksjonen for å returnere nedleggelsen er nødvendig etter å ha erklært nedleggelsen for å initialisere den.