Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Lukkede Funksjoner | Variabelomfang, Nøstede Funksjoner og Lukkinger
Funksjonelle Programmeringskonsepter i Python

bookLukkede 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.

12345678910
def 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())
copy

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.

question mark

Hva gjør en funksjon til en closure?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 8

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 3. Kapittel 8
some-alt