Python

Python Closures Tutorial

Python Closures Tutorial
En lukking er en nestet indre metode eller funksjon som gjenkjenner og har privilegiet å bruke variablene selv etter at den ytre funksjonen er ferdig utført i det lokale omfanget den ble opprettet i. En variabel må være fra en ytre funksjon eller omfang og er ikke sikkert avgrenset i det lokale rommet som skal brukes. Det er tre funksjoner i en Python-lukking, disse er som følger:

Nestet funksjon

Du må først forstå hva en nestet metode er. En nestet funksjon kan defineres som en metode spesifisert innenfor en annen metode. Rekursive funksjoner kan nå variablene til det ytre omfanget. For å endre de ikke-lokale variablene, definerer vi dem spesifikt som ikke-lokale via ikke-lokale nøkkelord fordi de av natur er skrivebeskyttet. Så først, ta en titt på den nestede funksjonen utført i Spyder Python 3.

Vi har definert to funksjoner: den ytre og den indre. I den ytre funksjonen har vi deklarert en variabel med noe tekstverdi i.

def ytre_func ()
msg = 'Hy! Jeg er Aqsa Yasin '

Denne variabelen er skrevet ut i den indre funksjonen ved hjelp av en utskriftsuttalelse. Den indre funksjonen returneres deretter, som er en nestet funksjon, og etter det har den ytre funksjonen blitt kalt.

def inner_func ()
skriv ut (msg)
returner inner_func ()
inner_func ()

Hvis du ikke bruker nøkkelordet return for å returnere den indre funksjonen, vil det likevel gi samme resultat.

Når du kjører denne enkle koden, vil den gi deg teksten, definert som verdien i variabelen 'msg'.

Utgang: Hy! Jeg er Aqsa Yasin

Definer nå samme type nestede funksjon uten returnøkkelord og passeringsvariabel 'msg' i parameter, og du vil få samme utdata.

Utgang: Hei

Enkel lukkingsfunksjon

Bruk samme kode, med en liten endring på de to siste linjene. Med strengen 'Hallo', de vis_msg () metoden ble påkalt, og den returnerte metoden var knyttet til ordet 'en annen'. Mens du ringer en annen(), teksten 'Hallo' ble fortsatt tilbakekalt, mens vis_msg () metoden hadde allerede blitt kjørt. Sørg for å legge til variabelen 'msg' innenfor den ytre funksjonen.

Når du kjører denne koden, vil den vise at den indre funksjonen, som er en vise fram(), har blitt tildelt variabelen 'en annen'.

Produksjon: .vis på 0x0000020CCED4D820>

Du kan ganske enkelt skrive ut Navn av en funksjon tildelt variabel 'en annen' som:

skrive ut (en annen.__Navn__)

Det vil sende navnet på en funksjon.

Utgang: vis

Nå, hvis du vil utføre denne variabelen som en funksjon, som andre metoder, kan du gjøre det ved å legge til parentes og kalle det slik:

en annen = show_msg ("Hei")
en annen()
en annen()

Du kan ringe dette så mange ganger du vil.

Når du kjører denne koden, vil den vise noe sånt som dette:

Produksjon:

Hallo

Hallo

Hallo

Nå kan du se at selv etter endt utførelse av den ytre funksjonen, husker den indre funksjonen fortsatt variablene og andre ting som ble opprettet eller definert i det lokale rommet.

Lukkingsfunksjon ved hjelp av parametere

Nå har vi lagt til parametere mens vi passerer en variabel i den ytre funksjonen som:

def show_msg (msg)

Verdien som sendes til den ytre funksjonsparameteren vil bli tildelt en variabel definert i denne ytre funksjonen som:

Melding = msg

Gi noen strengverdier i de nylig opprettede variablene på den siste linjen, som:

func1 = show_msg ('Hei')
func2 = show_msg ('Hei')

Nå må du kalle disse funksjonene slik:

func1 ()
func2 ()

Du får følgende utdata vist i spyder-redigeringsbildet:

Innen Python heter denne prosessen, der data (Hei eller Hei for dette scenariet) blir knyttet til skriptet, Lukking.

Enkel multiplikasjon ved hjelp av Python Closure

Vi har definert to funksjoner. Den ene er ytre, som har definert multiplikator, og den indre der verdien vil bli gitt mens du ringer til funksjonen. I den ytre funksjonen har vi deklarert en variabel med en definert multiplikatorverdi sendt inn. Denne multiplikatorverdien 'n' har blitt multiplisert med noe verdi 'x' som sendes i utskriftsuttalelsen til den indre funksjonen. Den indre funksjonen returneres deretter, som er en nestet funksjon, og etter det har variabler blitt kalt etter hverandre i utskriftsuttalelsene.

def out_multiply (n):
def in_multiply (x):
returner x * n
tilbake i_multiply

Nå har den nye variabelen tildelt en verdi som skal sendes i parameteren til den ytre funksjonen. Denne verdien lagres i variabelen 'n', som er en multiplikator definert i den ytre funksjonen:

times3 = out_multiply (3)
times5 = out_multiply (5)

Disse variablene vil bli tildelt flere verdier, som lagres i 'x' variabel definert i den indre funksjonen som må multipliseres med multiplikator 'n'. Når vi skriver ut variabelen som kalles 'ganger', en funksjon med noen heltallverdi 'x' tilordnet i parentes vil det multiplisere med den ytre funksjonsverdien 'n'.

Den første vil utgang 27 mens du utfører utskriftsuttalelse fordi variabel 'n' har 3 som en multiplikator, og vi har gitt 9 som et annet heltall som skal multipliseres.

skriv ut (times3 (9))

Den andre vil utgang 15 mens du utfører utskriftsuttalelsen fordi variabel 'n' har 3 som en multiplikator, og vi har gitt 5 som et annet heltall som skal multipliseres.

skriv ut (times5 (3))

Den siste vil utgang 30 mens du kjører en utskriftsuttalelse fordi den har rekursivt kalt times to function variable. Den første gangen har tidene gjort 'n' har 3 som en multiplikator, som vil bli multiplisert til heltall 2. Ved multiplikasjon vil den sende ut 6. Nå vil denne 6 brukes som en verdi, og deretter sendes som et argument til tidenes variabelfunksjon, der 'n' variabel multiplikator er 5. Så når 5 multipliseres med 6 det vil sende ut 30.

skriv ut (times5 (times3 (2)))

Du kan se utdataene i konsollen til Spyder editor.

Konklusjon

Nedleggelser kan forhindre bruk av globale verdier og skjule data. Det kan også gi en objekt- eller enhetsorientert tilnærming til problemet. Forhåpentligvis, etter å ha fulgt denne guiden, vil du kunne tilegne deg grunnleggende om Python-nedleggelse.

Beste spill å spille med håndsporing
Oculus Quest introduserte nylig den gode ideen om håndsporing uten kontrollere. Med et stadig økende antall spill og aktiviteter som utfører støtte en...
Hvordan vise OSD-overlegg i fullskjerm Linux-apper og spill
Å spille fullskjermspill eller bruke apper i distraksjonsfri fullskjermmodus kan avskrekke deg fra relevant systeminformasjon som er synlig i et panel...
Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...