Closures
Veeg om het menu te tonen
Closures versus geneste functies
Een geneste functie is elke functie die je definieert binnen een andere functie. Geneste functies zijn handig 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 zich variabelen uit de omringende functie kunnen "herinneren" en deze 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 gebruikt kunnen worden 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. Ook al is make_greeter klaar met uitvoeren, de geretourneerde greet-functie heeft nog steeds toegang tot de variabele name uit de oorspronkelijke scope. Daarom geeft het aanroepen van greeter() Hello, Alice! weer, en het aanroepen van another_greeter() 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.