Lukkede Funksjoner
Sveip for å vise menyen
Lukkinger vs. Nøstede funksjoner
En nøstet funksjon er en funksjon som er definert inne i en annen funksjon. Nøstede funksjoner er nyttige for å organisere kode og begrense omfanget til hjelpefunksjoner. Ikke alle nøstede funksjoner er imidlertid lukkinger.
En lukking er en spesiell type nøstet funksjon. Lukkinger er nøstede funksjoner som "husker" og kan få tilgang til variabler fra det omsluttende funksjonens omfang, selv etter at den ytre funksjonen er ferdig kjørt. Dette betyr at lukkinger kan opprettholde tilstand på tvers av flere kall.
Viktige punkter:
- Alle lukkinger er nøstede funksjoner;
- Ikke alle nøstede funksjoner er lukkinger;
- En nøstet funksjon blir en lukking bare hvis den bruker variabler fra den ytre funksjonens omfang, og disse variablene fortsatt er tilgjengelige etter at den ytre funksjonen har returnert.
Dette skillet er viktig for å forstå hvordan Python håndterer variabelomfang, og hvordan du kan bruke lukkinger til å kapsle inn tilstand og oppførsel sammen.
12345678910def make_greeter(name): def greet(): return f"Hello, {name}!" return greet greeter = make_greeter("Alice") print(greeter()) another_greeter = make_greeter("Bob") print(another_greeter())
Når du kaller make_greeter("Alice"), oppretter Python en ny greet-funksjon som husker verdien til name som "Alice". Selv om make_greeter er ferdig kjørt, har den returnerte greet-funksjonen fortsatt tilgang til variabelen name fra sitt opprinnelige omfang. Dette er grunnen til at kall på greeter() skriver ut Hello, Alice!, og kall på another_greeter() skriver ut Hello, Bob!. Hver lukking beholder sin egen kopi av variablene den trenger.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår