Lokal, Global och Icke-lokal Variabelräckvidd
Svep för att visa menyn
Att förstå hur Python bestämmer variabelns räckvidd är avgörande för att skriva tydlig och felfri kod. Python använder en specifik uppsättning regler, känd som LEGB-regeln, för att avgöra var den ska leta efter värdet av en variabel. LEGB står för Local, Enclosing, Global och Built-in. När du refererar till en variabel söker Python efter dess värde i denna ordning:
- Local: variabler definierade inom den aktuella funktionen eller metoden;
- Enclosing: variabler i den närmaste omgivande funktionsräckvidden (om du använder nästlade funktioner);
- Global: variabler definierade på modulens toppnivå eller deklarerade som global med nyckelordet
global; - Built-in: namn som är fördefinierade i Python, såsom
lenellerrange.
Denna regel gör att Python kan lösa variabelnamn effektivt och hjälper dig att förutse varifrån en variabels värde kommer. Ibland kan du vilja ändra variabler utanför den aktuella funktionens räckvidd. Python tillhandahåller två nyckelord för detta: global och nonlocal. Nyckelordet global låter dig tilldela ett värde till en variabel på modulnivå, medan nonlocal gör det möjligt att ändra en variabel i den närmaste omgivande funktionsräckvidden som inte är 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()
- Variabeln
global_varär definierad i det globala omfånget och är tillgänglig från hela modulen; - Inuti funktionen
outerskapasenclosing_varsom en omslutande variabel som kan nås av nästlade funktioner; - Den nästlade funktionen
innerdefinierarlocal_var, som endast existerar inom den funktionen och visar åtkomst till variabler från alla omslutande omfång; - Funktionen
lenanvänds för att visa hur Python kan komma åt namn från det inbyggda omfånget.
Detta visar hur Python hittar variabelvärden genom att söka igenom lokalt, omslutande, globalt och inbyggt omfång i den ordningen, vilket gör variabelupplösning förutsägbar och organiserad.
1. Vad gör nyckelordet nonlocal i Python?
2. Vad är LEGB-regeln?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal