Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Sulut | Muuttujien Näkyvyys, Sisäkkäiset Funktiot ja Sulut
Funktionaalisen Ohjelmoinnin Käsitteet Pythonissa

bookSulut

Pyyhkäise näyttääksesi valikon

Sulkeet vs. sisäkkäiset funktiot

Sisäkkäinen funktio on mikä tahansa funktio, joka määritellään toisen funktion sisällä. Sisäkkäiset funktiot auttavat koodin jäsentelyssä ja apufunktioiden näkyvyyden rajoittamisessa. Kaikki sisäkkäiset funktiot eivät kuitenkaan ole sulkeita.

Sulje on erityinen sisäkkäisen funktion tyyppi. Sulkeet ovat sisäkkäisiä funktioita, jotka "muistavat" ja voivat käyttää ulomman funktion muuttujia, vaikka ulompi funktio olisi jo suoritettu loppuun. Tämä tarkoittaa, että sulkeet voivat säilyttää tilan useiden kutsujen välillä.

Tärkeimmät kohdat:

  • Kaikki sulkeet ovat sisäkkäisiä funktioita;
  • Kaikki sisäkkäiset funktiot eivät ole sulkeita;
  • Sisäkkäisestä funktiosta tulee sulje vain, jos se käyttää ulomman funktion muuttujia ja nämä muuttujat ovat edelleen käytettävissä ulomman funktion palauttamisen jälkeen.

Tämä ero on tärkeä, jotta ymmärtää, miten Python hallitsee muuttujien näkyvyyttä ja miten sulkeita voidaan käyttää tilan ja toiminnallisuuden kapselointiin.

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

Kun kutsut make_greeter("Alice"), Python luo uuden greet-funktion, joka muistaa muuttujan name arvon "Alice". Vaikka make_greeter-funktion suoritus päättyy, palautettu greet-funktio säilyttää edelleen pääsyn alkuperäiseen name-muuttujaan. Tämän vuoksi greeter() tulostaa Hello, Alice! ja another_greeter() tulostaa Hello, Bob!. Jokainen sulje säilyttää oman kopionsa tarvitsemistaan muuttujista.

question mark

Mikä tekee funktiosta sulkeuman?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 8

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 3. Luku 8
some-alt