Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python Global, Local en Nonlocal Variabelen begrijpen

Python Global, Local en Nonlocal Variabelen begrijpen

Beheers het gebruik van globale, locale en non-lokale variabelen in Python, en weet wanneer je elk toepast voor schone, onderhoudbare code.

Video: Python Lokale en Globale Variabelen

Globale Variabelen

In Python is een variabele gedeclareerd buiten elke functie – op module-niveau – een globale variabele. Het kan overal in de module gelezen worden, maar moet gedeclareerd worden met het global keyword als je het binnen een functie wilt wijzigen.

Voorbeeld: een globale variabele aanmaken en lezen

x = "global"
def foo():
    print("x binnen:", x)
foo()
print("x buiten:", x)

Output

x binnen: global
x buiten: global

Het proberen x te hertoewijzen zonder het globaal te declareren resulteert in een UnboundLocalError:

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

Output

UnboundLocalError: local variable 'x' referenced before assignment

Om een globale variabele binnen een functie te wijzigen, gebruik het global keyword:

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

Output

globalglobal

Lokale Variabelen

Een lokale variabele is gedefinieerd binnen een functie-body en bestaat alleen tijdens die functie-uitvoering. Het kan niet buiten de functie benaderd worden.

Voorbeeld: een lokale variabele buiten zijn scope benaderen

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

Output

NameError: name 'y' is not defined

Een lokale variabele correct definiëren en gebruiken:

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

Output

lokaal

Globale en Lokale Variabelen Combineren

Het is gebruikelijk om beide scopes in dezelfde module te gebruiken. Het global keyword zorgt ervoor dat een variabele naar de module-level instantie refereert.

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

Output

global global
lokaal

Wanneer een lokale variabele een naam deelt met een globale, zijn ze onafhankelijk:

x = 5
def foo():
    x = 10
    print("lokaal x:", x)
foo()
print("globaal x:", x)

Output

lokaal x: 10
globaal x: 5

Non-lokale Variabelen

Geneste functies kunnen variabelen uit hun omsluitende (maar niet globale) scope benaderen en wijzigen met het nonlocal keyword.

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

Output

inner: nonlokaal
outer: nonlokaal

Let op: Het updaten van een non-lokale variabele binnen de inner-functie update de variabele in de outer-functie's scope.

Python

  1. C Variabelen, Constanten en Literals: Een Complete Gids
  2. Python Keywords en Identifiers: Gereserveerde woorden en naamconventies onder de knie krijgen
  3. Python Statements, Indentatie en Comments: Een duidelijke gids
  4. Python Variabelen, Constanten en Literals – Een uitgebreide gids
  5. Python Type Conversie & Casting onder de knie krijgen: Een uitgebreide gids
  6. Python I/O en Module Imports onder de knie krijgen: Een praktische gids
  7. Python's Global Keyword onder de knie krijgen: Hoe en wanneer te gebruiken
  8. Python getallen, typeconversie en wiskunde beheersen
  9. Python-directory en bestandsbewerkingen beheersen
  10. Python-fouten & ingebouwde exceptions beheersen
  11. type() en isinstance() in Python begrijpen: praktische voorbeelden