Lokal, Global og Ikke-lokal Variabelrækkevidde
Stryg for at vise menuen
Forståelse af, hvordan Python bestemmer variabelscope, er afgørende for at skrive klar og fejlfri kode. Python anvender et specifikt sæt regler, kendt som LEGB-reglen, for at afgøre, hvor den skal lede efter værdien af en variabel. LEGB står for Local, Enclosing, Global og Built-in. Når du refererer til en variabel, søger Python efter dens værdi i denne rækkefølge:
- Local: variabler defineret inden for den aktuelle funktion eller metode;
- Enclosing: variabler i den nærmeste omsluttende funktionsscope (hvis der bruges indlejrede funktioner);
- Global: variabler defineret på modulniveau eller erklæret global med nøgleordet
global; - Built-in: navne, der er foruddefinerede i Python, såsom
lenellerrange.
Denne regel gør det muligt for Python at løse variabelnavne effektivt og hjælper dig med at forudsige, hvor en variabels værdi kommer fra. Nogle gange kan det være nødvendigt at ændre variabler uden for den aktuelle funktionsscope. Python tilbyder to nøgleord til dette: global og nonlocal. Nøgleordet global gør det muligt at tildele en værdi til en variabel på modulniveau, mens nonlocal giver mulighed for at ændre en variabel i den nærmeste omsluttende funktionsscope, som ikke er global.
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()
- Variablen
global_varer defineret i det globale scope og er tilgængelig overalt i modulet; - Inde i funktionen
outeroprettesenclosing_var, som er en variabel i det omsluttende scope, der kan tilgås af indlejrede funktioner; - Den indlejrede funktion
innerdefinererlocal_var, som kun eksisterer inden for denne funktion og demonstrerer adgang til variabler fra alle omsluttende scopes; - Funktionen
lenbruges til at vise, hvordan Python kan tilgå navne fra det indbyggede scope.
Dette illustrerer, hvordan Python finder værdier for variabler ved at søge gennem lokale, omsluttende, globale og indbyggede scopes i den rækkefølge, hvilket gør variabelopslag forudsigeligt og organiseret.
1. Hvad gør nøgleordet nonlocal i Python?
2. Hvad er LEGB-reglen?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat