Closures
Veeg om het menu te tonen
Closures versus geneste functies
Een geneste functie is elke functie die binnen een andere functie wordt gedefinieerd. Geneste functies zijn nuttig voor het organiseren van code en het beperken van de scope van hulpfuncties. Niet alle geneste functies zijn echter closures.
Een closure is een speciaal type geneste functie. Closures zijn geneste functies die variabelen uit de scope van hun omringende functie "onthouden" en kunnen benaderen, zelfs nadat de buitenste functie is beëindigd. Dit betekent dat closures toestand kunnen behouden over meerdere aanroepen heen.
Belangrijke punten:
- Alle closures zijn geneste functies;
- Niet alle geneste functies zijn closures;
- Een geneste functie wordt pas een closure als deze variabelen uit de scope van de buitenste functie gebruikt en deze variabelen nog steeds toegankelijk zijn nadat de buitenste functie is teruggekeerd.
Dit onderscheid is belangrijk om te begrijpen hoe Python omgaat met variabelen en hoe closures kunnen worden gebruikt om toestand en gedrag samen te kapselen.
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())
Wanneer je make_greeter("Alice") aanroept, maakt Python een nieuwe greet-functie aan die de waarde van name als "Alice" onthoudt. Zelfs nadat make_greeter is voltooid, heeft de geretourneerde greet-functie nog steeds toegang tot de variabele name uit de oorspronkelijke scope. Daarom geeft het aanroepen van greeter() de tekst Hello, Alice! weer, en het aanroepen van another_greeter() de tekst Hello, Bob!. Elke closure bewaart zijn eigen kopie van de benodigde variabelen.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.