Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Lukninger | Variabelscope, Indlejrede Funktioner og Closures
Funktionelle Programmeringskoncepter i Python

bookLukninger

Stryg for at vise menuen

Closures vs. Indlejrede Funktioner

En indlejret funktion er enhver funktion, der defineres inden i en anden funktion. Indlejrede funktioner er nyttige til at organisere kode og begrænse rækkevidden af hjælpefunktioner. Dog er ikke alle indlejrede funktioner closures.

En closure er en særlig type indlejret funktion. Closures er indlejrede funktioner, der "husker" og kan få adgang til variabler fra deres omsluttende funktions scope, selv efter den ydre funktion er afsluttet. Dette betyder, at closures kan bevare tilstand på tværs af flere kald.

Vigtige punkter:

  • Alle closures er indlejrede funktioner;
  • Ikke alle indlejrede funktioner er closures;
  • En indlejret funktion bliver kun en closure, hvis den bruger variabler fra den ydre funktions scope, og disse variabler stadig er tilgængelige, efter den ydre funktion er returneret.

Denne sondring er vigtig for at forstå, hvordan Python håndterer variabel scope, og hvordan closures kan bruges til at kapsle tilstand og funktionalitet 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 kalder make_greeter("Alice"), opretter Python en ny greet-funktion, der husker værdien af name som "Alice". Selvom make_greeter er færdig med at køre, har den returnerede greet-funktion stadig adgang til variablen name fra dens oprindelige scope. Derfor udskriver et kald til greeter() Hello, Alice!, og et kald til another_greeter() udskriver Hello, Bob!. Hver closure bevarer sin egen kopi af de variabler, den har brug for.

question mark

Hvad gør en funktion til en closure?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 8

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 3. Kapitel 8
some-alt