Sulut
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.
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())
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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme