Bereik van Lokale, Globale en Niet-lokale Variabelen
Veeg om het menu te tonen
Begrijpen hoe Python het bereik van variabelen bepaalt, is essentieel voor het schrijven van duidelijke en foutloze code. Python gebruikt een specifieke set regels, bekend als de LEGB-regel, om te bepalen waar het de waarde van een variabele moet zoeken. LEGB staat voor Local, Enclosing, Global en Built-in. Wanneer je naar een variabele verwijst, zoekt Python de waarde in deze volgorde:
- Local: variabelen gedefinieerd binnen de huidige functie of methode;
- Enclosing: variabelen in de dichtstbijzijnde omsluitende functiebereik (bij gebruik van geneste functies);
- Global: variabelen gedefinieerd op het hoogste niveau van de module of gedeclareerd als global met het
globalsleutelwoord; - Built-in: namen die vooraf zijn toegewezen in Python, zoals
lenofrange.
Deze regel stelt Python in staat om variabelen efficiënt te vinden en helpt je te voorspellen waar de waarde van een variabele vandaan zal komen. Soms wil je variabelen buiten het bereik van de huidige functie aanpassen. Python biedt hiervoor twee sleutelwoorden: global en nonlocal. Het global sleutelwoord maakt het mogelijk om een waarde toe te wijzen aan een variabele op module-niveau, terwijl nonlocal het mogelijk maakt om een variabele aan te passen in het dichtstbijzijnde omsluitende functiebereik dat niet globaal is.
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()
- De variabele
global_varis gedefinieerd in de globale scope en is overal in de module toegankelijk; - Binnen de functie
outercreëertenclosing_vareen variabele in de omsluitende scope die toegankelijk is voor geneste functies; - De geneste functie
innerdefinieertlocal_var, die alleen binnen die functie bestaat en laat zien dat variabelen uit alle omsluitende scopes toegankelijk zijn; - De functie
lenwordt gebruikt om te laten zien hoe Python namen uit de ingebouwde scope kan benaderen.
Dit toont aan hoe Python variabelewaarden vindt door achtereenvolgens te zoeken in de lokale, omsluitende, globale en ingebouwde scopes, waardoor variabelen op een voorspelbare en georganiseerde manier worden opgelost.
1. Wat doet het nonlocal sleutelwoord in Python?
2. Wat is de LEGB-regel?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.