Heim >Backend-Entwicklung >Python-Tutorial >Wie unterscheidet sich das „nonlocal'-Schlüsselwort von Python von „global' im Scope Management?

Wie unterscheidet sich das „nonlocal'-Schlüsselwort von Python von „global' im Scope Management?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-11 19:05:11894Durchsuche

How Does Python's `nonlocal` Keyword Differ from `global` in Scope Management?

Die Rolle von „nonlocal“ in Python 3 verstehen

In Python 3 spielt „nonlocal“ eine entscheidende Rolle beim Zugriff auf Variablen, die in definiert sind ein umschließender Bereich, aber außerhalb des aktuellen. Im Gegensatz zu „global“, das auf Variablen im globalen Bereich verweist, können Sie mit „nonlocal“ mit Variablen im Gültigkeitsbereich einer übergeordneten Funktion interagieren.

Betrachten Sie dieses Beispiel ohne die Verwendung von „nonlocal“:

x = 0
def outer():
    x = 1
    def inner():
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)

Ausgabe:

inner: 2
outer: 1
global: 0

Wie wir sehen können, wird der Variablen „x“ in der inneren Funktion ein lokaler Wert von 2 zugewiesen, während die Variable „x“ in der äußeren Funktion bei 1 bleibt. Die globale Variable „x“ behält ihren Anfangswert von 0.

Jetzt schreiben wir diesen Code mit „nonlocal“ um:

x = 0
def outer():
    x = 1
    def inner():
        nonlocal x
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)

Ausgabe:

inner: 2
outer: 2
global: 0

Mit „nonlocal“ ist die Variable „x“ in der inneren Funktion nun an die Variable „x“ gebunden. in der äußeren Funktion. Wenn also „x“ innerhalb der inneren Funktion geändert wird, wirkt sich dies auch auf seinen Wert in der äußeren Funktion aus. Die globale Variable „x“ bleibt unverändert.

Im Gegensatz dazu würde „global“ die Variable „x“ in der inneren Funktion an die Variable im globalen Bereich binden:

x = 0
def outer():
    x = 1
    def inner():
        global x
        x = 2
        print("inner:", x)
        
    inner()
    print("outer:", x)

outer()
print("global:", x)

Ausgabe :

inner: 2
outer: 1
global: 2

Das Verständnis der subtilen Unterschiede zwischen „nicht lokal“ und „global“ ist entscheidend für die effektive Verwaltung von Variablen im Python-Code.

Das obige ist der detaillierte Inhalt vonWie unterscheidet sich das „nonlocal'-Schlüsselwort von Python von „global' im Scope Management?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn