Paikallisten, 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
lentairange.
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()
- Muuttuja
global_varon määritelty globaalissa laajuudessa ja siihen pääsee käsiksi mistä tahansa moduulissa; outer-funktion sisälläenclosing_varluo sulkevan laajuuden muuttujan, johon sisäkkäiset funktiot pääsevät käsiksi;- Sisäkkäinen
inner-funktio määritteleelocal_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ö?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme