Lokalt, globalt og ikke-lokalt variabelområde
Sveip for å vise menyen
Å forstå hvordan Python bestemmer variabelens omfang er avgjørende for å skrive tydelig og feilfri kode. Python bruker et spesifikt sett med regler, kjent som LEGB-regelen, for å avgjøre hvor den skal lete etter verdien til en variabel. LEGB står for Local, Enclosing, Global og Built-in. Når du refererer til en variabel, søker Python etter verdien i denne rekkefølgen:
- Local: variabler definert i den nåværende funksjonen eller metoden;
- Enclosing: variabler i nærmeste omsluttende funksjonsomfang (hvis du bruker nestede funksjoner);
- Global: variabler definert på toppnivå i modulen eller erklært global med
global-nøkkelordet; - Built-in: navn som er forhåndsdefinert i Python, som
lenellerrange.
Denne regelen gjør at Python kan løse variabelnavn effektivt og hjelper deg å forutsi hvor en variabels verdi kommer fra. Noen ganger kan det være ønskelig å endre variabler utenfor den nåværende funksjonens omfang. Python tilbyr to nøkkelord for dette: global og nonlocal. global-nøkkelordet lar deg tilordne en verdi til en variabel på modulnivå, mens nonlocal gjør det mulig å endre en variabel i nærmeste omsluttende funksjonsomfang som ikke er globalt.
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()
- Variabelen
global_varer definert i globalt omfang og er tilgjengelig fra hvor som helst i modulen; - Inne i funksjonen
outeropprettesenclosing_varsom en variabel i det omsluttende omfanget, og kan nås av nestede funksjoner; - Den nestede funksjonen
innerdefinererlocal_var, som kun eksisterer innenfor denne funksjonen og viser tilgang til variabler fra alle omsluttende omfang; - Funksjonen
lenbrukes for å vise hvordan Python kan få tilgang til navn fra det innebygde omfanget.
Dette viser hvordan Python finner verdier for variabler ved å søke gjennom lokale, omsluttende, globale og innebygde omfang i den rekkefølgen, noe som gjør variabeloppløsning forutsigbar og organisert.
1. Hva gjør nøkkelordet nonlocal i Python?
2. Hva er LEGB-regelen?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår