Lukninger
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.
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 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.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat