Heim > Backend-Entwicklung > Python-Tutorial > Wie unterscheidet sich das Python-Schlüsselwort „nonlocal' von „global' beim Ändern von Variablen?

Wie unterscheidet sich das Python-Schlüsselwort „nonlocal' von „global' beim Ändern von Variablen?

Linda Hamilton
Freigeben: 2024-12-21 04:59:13
Original
977 Leute haben es durchsucht

How Does Python's `nonlocal` Keyword Differ from `global` in Modifying Variables?

Verstehen von „nichtlokal“ in Python 3

Im Gegensatz zu herkömmlichen Sprachen ermöglicht Python verschachtelten Funktionen den Zugriff auf Variablen, die in ihren äußeren Bereichen definiert sind. Der Zugriff auf Variablen, die nicht innerhalb der verschachtelten Funktion deklariert sind (d. h. nicht lokale Variablen), kann jedoch zu unerwartetem Verhalten führen.

Das Schlüsselwort „nonlocal“

In Mit dem Schlüsselwort „nonlocal“ in Python 3 können Sie in einem äußeren Bereich deklarierte Variablen innerhalb einer verschachtelten Funktion ändern. Durch die Verwendung von „nonlocal“ erklären Sie, dass die Variable, die Sie ändern, nicht lokal ist und zu einem äußeren Bereich gehört.

Funktionsweise von „nonlocal“

Bedenken Sie Folgendes folgenden Code ohne Verwendung „nonlocal“:

x = 0

def outer():
    x = 1

    def inner():
        x = 2
        print("inner:", x)

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

outer()
print("global:", x)
Nach dem Login kopieren

Ausgabe:

inner: 2
outer: 1
global: 0
Nach dem Login kopieren

In diesem Beispiel überschattet die Variable x in der inneren Funktion die Variable x der äußeren Funktion, was dazu führt, dass ihr der Wert 2 zugewiesen wird x innerhalb der inneren Funktion. Die Variable x der äußeren Funktion bleibt davon unberührt.

Verwendung von „nonlocal“

Um die Variable x der äußeren Funktion gegenüber der inneren Funktion zu ändern, können wir „nonlocal“ wie folgt verwenden :

x = 0

def outer():
    x = 1

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

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

outer()
print("global:", x)
Nach dem Login kopieren

Ausgabe:

inner: 2
outer: 2
global: 0
Nach dem Login kopieren

In diesem Fall ist die Mit dem Schlüsselwort „nonlocal“ kann die innere Funktion auf die Variable x der äußeren Funktion zugreifen und diese ändern. Dadurch wird der Wert von x in der äußeren Funktion auf 2 geändert.

Vergleich mit „global“

Im Gegensatz zu „nonlocal“, dem Schlüsselwort „global“. bezieht sich auf eine Variable, die zum globalen Bereich gehört. Die Verwendung von „global“ würde die Variable in der inneren Funktion an die globale Variable binden, unabhängig vom Vorhandensein anderer lokaler Variablen mit demselben Namen:

x = 0

def outer():
    x = 1

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

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

outer()
print("global:", x)
Nach dem Login kopieren

Ausgabe:

inner: 2
outer: 1
global: 2
Nach dem Login kopieren

Daher sollte „nonlocal“ verwendet werden, wenn Sie eine in einem äußeren Bereich deklarierte Variable ändern möchten, während „global“ verwendet werden sollte, wenn auf eine Variable aus dem globalen Bereich zugegriffen wird.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage