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

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.

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())

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.

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