Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Lokal, Global og Ikke-lokal Variabelrækkevidde | Variabelscope, Indlejrede Funktioner og Closures
Funktionelle Programmeringskoncepter i Python

bookLokal, 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 len eller range.

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()
copy
  • Variablen global_var er defineret i det globale scope og er tilgængelig overalt i modulet;
  • Inde i funktionen outer oprettes enclosing_var, som er en variabel i det omsluttende scope, der kan tilgås af indlejrede funktioner;
  • Den indlejrede funktion inner definerer local_var, som kun eksisterer inden for denne funktion og demonstrerer adgang til variabler fra alle omsluttende scopes;
  • Funktionen len bruges 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?

question mark

Hvad gør nøgleordet nonlocal i Python?

Vælg det korrekte svar

question mark

Hvad er LEGB-reglen?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 3. Kapitel 1
some-alt