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

bookPaikallisten, globaalien ja ei-paikallisten muuttujien näkyvyysalue

Pyyhkäise näyttääksesi valikon

Ymmärrys siitä, miten Python määrittää muuttujien näkyvyyden, on olennaista selkeän ja virheettömän koodin kirjoittamisessa. Python käyttää erityistä sääntökokoelmaa, jota kutsutaan LEGB-säännöksi, päättääkseen, mistä muuttujan arvo etsitään. LEGB tarkoittaa Local, Enclosing, Global ja Built-in. Kun viittaat muuttujaan, Python etsii sen arvoa tässä järjestyksessä:

  • Local: nykyisessä funktiossa tai metodissa määritellyt muuttujat;
  • Enclosing: lähimmän sisäkkäisen funktion näkyvyysalueen muuttujat (jos käytetään sisäkkäisiä funktioita);
  • Global: moduulin ylimmällä tasolla määritellyt muuttujat tai muuttujat, jotka on määritelty global-avainsanalla;
  • Built-in: Pythonin valmiiksi määrittelemät nimet, kuten len tai range.

Tämä sääntö mahdollistaa muuttujien nimien tehokkaan ratkaisemisen Pythonissa ja auttaa ennakoimaan, mistä muuttujan arvo tulee. Joskus saatat haluta muokata muuttujia nykyisen funktion näkyvyysalueen ulkopuolella. Python tarjoaa tähän kaksi avainsanaa: global ja nonlocal. global-avainsanalla voit asettaa arvon moduulitason muuttujalle, kun taas nonlocal mahdollistaa muuttujan muokkaamisen lähimmässä sisäkkäisessä funktion näkyvyysalueessa, joka ei ole globaali.

123456789101112131415161718
# Global scope global_var = "I am global" def outer(): # Enclosing scope enclosing_var = "I am enclosing" def inner(): # Local scope local_var = "I am local" print("Local:", local_var) print("Enclosing:", enclosing_var) # Found in enclosing scope print("Global:", global_var) # Found in global scope print("Built-in:", len([1, 2, 3])) # 'len' comes from built-in scope inner() outer()
copy
  • Muuttuja global_var on määritelty globaalissa laajuudessa ja siihen pääsee käsiksi mistä tahansa moduulissa;
  • outer-funktion sisällä enclosing_var luo sulkevan laajuuden muuttujan, johon sisäkkäiset funktiot pääsevät käsiksi;
  • Sisäkkäinen inner-funktio määrittelee local_var-muuttujan, joka on olemassa vain kyseisessä funktiossa ja havainnollistaa pääsyä kaikkiin sulkeviin laajuuksiin;
  • len-funktiota käytetään osoittamaan, miten Python voi käyttää nimiä sisäänrakennetusta laajuudesta.

Tämä havainnollistaa, kuinka Python etsii muuttujien arvoja järjestyksessä: paikallinen, sulkeva, globaali ja sisäänrakennettu laajuus, mikä tekee muuttujien ratkaisemisesta ennustettavaa ja järjestelmällistä.

1. Mitä nonlocal-avainsana tekee Pythonissa?

2. Mikä on LEGB-sääntö?

question mark

Mitä nonlocal-avainsana tekee Pythonissa?

Valitse oikea vastaus

question mark

Mikä on LEGB-sääntö?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Osio 3. Luku 1
some-alt