Python globale, lokale en niet-lokale variabelen (met voorbeelden)

In deze tutorial leer je over Python Global-variabelen, lokale variabelen, niet-lokale variabelen en waar je ze kunt gebruiken.

Video: Python lokale en globale variabelen

Globale variabelen

In Python staat een variabele die buiten de functie of in het globale bereik is gedeclareerd, bekend als een globale variabele. Dit betekent dat een globale variabele toegankelijk is binnen of buiten de functie.

Laten we een voorbeeld bekijken van hoe een globale variabele wordt gemaakt in Python.

Voorbeeld 1: maak een globale variabele

 x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)

Uitvoer

 x binnen: globaal x buiten: globaal

In de bovenstaande code hebben we x als een globale variabele gemaakt en a gedefinieerd foo()om de globale variabele x af te drukken. Ten slotte noemen we de foo()die de waarde van x zal afdrukken.

Wat als u de waarde van x in een functie wilt wijzigen?

 x = "global" def foo(): x = x * 2 print(x) foo()

Uitvoer

 UnboundLocalError: lokale variabele 'x' waarnaar wordt verwezen vóór toewijzing

De uitvoer toont een fout omdat Python x als een lokale variabele behandelt en x ook niet binnenin is gedefinieerd foo().

Om dit te laten werken, gebruiken we het globaltrefwoord. Bezoek Python Global Keyword voor meer informatie.

Lokale variabelen

Een variabele die is gedeclareerd in de hoofdtekst van de functie of in het lokale bereik, staat bekend als een lokale variabele.

Voorbeeld 2: toegang tot lokale variabele buiten het bereik

 def foo(): y = "local" foo() print(y)

Uitvoer

 NameError: naam 'y' is niet gedefinieerd

De uitvoer toont een fout omdat we proberen toegang te krijgen tot een lokale variabele y in een globaal bereik, terwijl de lokale variabele alleen werkt binnen foo()of lokaal bereik.

Laten we een voorbeeld bekijken van hoe een lokale variabele wordt gemaakt in Python.

Voorbeeld 3: maak een lokale variabele

Normaal gesproken declareren we een variabele binnen de functie om een ​​lokale variabele te maken.

 def foo(): y = "local" print(y) foo()

Uitvoer

 lokaal

Laten we eens kijken naar het eerdere probleem waarbij x een globale variabele was en we x binnen wilden wijzigen foo().

Globale en lokale variabelen

Hier laten we zien hoe globale variabelen en lokale variabelen in dezelfde code kunnen worden gebruikt.

Voorbeeld 4: Globale en lokale variabelen in dezelfde code gebruiken

 x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()

Uitvoer

 globaal globaal lokaal

In de bovenstaande code declareren we x als een globale en y als een lokale variabele in de foo(). Vervolgens gebruiken we de vermenigvuldigingsoperator *om de globale variabele x te wijzigen en we drukken zowel x als y af.

Na het aanroepen van de foo(), wordt de waarde van x global globalomdat we de hebben gebruikt x * 2om twee keer af te drukken global. Daarna drukken we de waarde van de lokale variabele y af local.

Voorbeeld 5: Globale variabele en Lokale variabele met dezelfde naam

 x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)

Uitvoer

 lokaal x: 10 globaal x: 5

In de bovenstaande code hebben we dezelfde naam x gebruikt voor zowel globale variabele als lokale variabele. We krijgen een ander resultaat als we dezelfde variabele afdrukken, omdat de variabele in beide bereiken wordt gedeclareerd, dwz het lokale bereik binnen foo()en het globale bereik buiten foo().

When we print the variable inside foo() it outputs local x: 10. This is called the local scope of the variable.

Similarly, when we print the variable outside the foo(), it outputs global x: 5. This is called the global scope of the variable.

Nonlocal Variables

Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.

Let's see an example of how a nonlocal variable is used in Python.

We use nonlocal keywords to create nonlocal variables.

Example 6: Create a nonlocal variable

 def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()

Output

 inner: nonlocal outer: nonlocal

In de bovenstaande code is er een geneste inner()functie. We gebruiken nonlocaltrefwoorden om een ​​niet-lokale variabele te maken. De inner()functie is gedefinieerd in het bereik van een andere functie outer().

Opmerking : als we de waarde van een niet-lokale variabele wijzigen, verschijnen de wijzigingen in de lokale variabele.

Interessante artikelen...