Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Slutna Funktioner | Variabelns Räckvidd, Nästlade Funktioner och Slutna Funktioner
Funktionella Programmeringskoncept i Python

bookSlutna Funktioner

Svep för att visa menyn

Slutna funktioner vs. nästlade funktioner

En nästlad funktion är en funktion som definieras inuti en annan funktion. Nästlade funktioner används för att organisera kod och begränsa räckvidden för hjälpfunktioner. Dock är inte alla nästlade funktioner slutna funktioner.

En sluten funktion är en speciell typ av nästlad funktion. Slutna funktioner är nästlade funktioner som "kommer ihåg" och kan komma åt variabler från den omgivande funktionens räckvidd, även efter att den yttre funktionen har avslutats. Detta innebär att slutna funktioner kan behålla tillstånd över flera anrop.

Viktiga punkter:

  • Alla slutna funktioner är nästlade funktioner;
  • Inte alla nästlade funktioner är slutna funktioner;
  • En nästlad funktion blir en sluten funktion endast om den använder variabler från den yttre funktionens räckvidd och dessa variabler fortfarande är tillgängliga efter att den yttre funktionen har returnerat.

Denna skillnad är viktig för att förstå hur Python hanterar variabelräckvidd och hur slutna funktioner kan användas för att kapsla in tillstånd och beteende tillsammans.

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

När du anropar make_greeter("Alice") skapar Python en ny greet-funktion som kommer ihåg värdet på name som "Alice". Även om make_greeter har avslutats har den returnerade greet-funktionen fortfarande tillgång till variabeln name från sitt ursprungliga omfång. Det är därför ett anrop till greeter() skriver ut Hello, Alice!, och ett anrop till another_greeter() skriver ut Hello, Bob!. Varje sluten funktion behåller sin egen kopia av de variabler den behöver.

question mark

Vad gör en funktion till en closure?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 8

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 3. Kapitel 8
some-alt