Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Closures | Variabele Scope, Geneste Functies en Closures
Functionele Programmeerconcepten in Python

bookClosures

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.

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

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.

question mark

Wat maakt een functie een closure?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 8

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 3. Hoofdstuk 8
some-alt