Nestet funksjon:
En nestet funksjon er definert i en annen funksjon. Disse funksjonene kan få tilgang til en variabel av ytre funksjon. Den ikke-lokale variabelen vi kan få tilgang til innenfor deres omfang.
Eks:
defouter_fun (er):Produksjon:
I eksemplet ovenfor er indre_fun en nestet funksjon, og MSG er en ikke-lokal variabel. Vi kan få tilgang til disse inne i det ytre_fun -kroppen.
Avslutningsdefinisjon:
Python -lukking er en nestet funksjon. Vi får tilgang til variabelen utenfor omfanget. Dette konseptet er viktig for å forstå python dekoratører.
Alle nestede funksjoner er ikke stenginger. Følgende tre kriterier skal møtes for å definere en nedleggelse:
Eks:
#defining nestede funksjonerProduksjon:
I eksemplet ovenfor er hilsen_msg den ytre funksjonen. Dette skaper en indre funksjon (hilsen_msg er nedleggelse her), og den returneres.
Den ytre funksjonen hilsen_msg returnerer en print_msg -funksjon, og den er tilordnet call_fun -variabelen. Her ser vi den ytre funksjonen avsluttet utførelsen, men vi kan fremdeles få tilgang til MSG -variabelen.
Hvordan endre variabel inne i lukkingen:
Ved hjelp av ikke -lokal nøkkelord kan vi endre variabelen i den indre funksjonen.
Eks: Uten å bruke ikke -lokal nøkkelord. Her prøver vi å endre NUM -variabelen inne i lukking og fikk Unboundlocalerror fordi Python mener NUM som en lokal variabel og Num ikke er definert i moro ().
Defgenerate_num ():Produksjon:
Eks: Med bruk ikke -lokal nøkkelord. I eksemplet nedenfor ved hjelp av ikke -lokal nøkkelord vil vi kunne endre NUM -variabelen.
Defgenerate_num ():Produksjon:
Vi vil skrive mer eksempel ved hjelp av en nedleggelse:
Eks: Dette vil skrive ut beståtte argumenter og funksjonsnavn
Defouter (func):Produksjon:
Eks: I eksemplet nedenfor, hver gang nedleggelsen kalles, vil verdiene legges til en liste, og den vil legge til alle verdiene i listen og deretter returnere en verdi.
Defaddition ():Produksjon:
Eks: I dette eksemplet multipliserer det indre funksjonsparameternummeret med ytre funksjonsparameter
def multiply_by_number (m):
Produksjon:
Konklusjon:
Python -lukking er en nestet funksjon. Med dette kan vi unngå å bruke globale variabler ved bruk av ikke-lokale variabler. Dette gir noen data som skjuler og forstår dette konseptet nyttig i å bygge en Python -dekoratør.