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)
Ausgabe:
inner: 2 outer: 1 global: 0
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)
Ausgabe:
inner: 2 outer: 2 global: 0
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)
Ausgabe:
inner: 2 outer: 1 global: 2
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!