„nonlocal“ in Python 3 verstehen: Ein tiefer Einblick
Python 3 hat das leistungsstarke Schlüsselwort „nonlocal“ eingeführt, mit dem Sie Änderungen vornehmen können Variablen in einem äußeren Bereich aus verschachtelten Funktionen. Diese Frage bietet eine umfassende Erklärung der Funktionsweise von „nichtlokal“.
Was ist „nichtlokal“?
„nichtlokal“ entkoppelt eine Variable vom lokalen Gültigkeitsbereich einer verschachtelten Variable Funktion, die es ihr ermöglicht, in einem äußeren Bereich auf die Variable zuzugreifen. Dies ist nützlich, wenn Sie eine Variable in einem äußeren Bereich ändern müssen, ohne globale Variablen oder andere komplizierte Methoden zu verwenden.
So funktioniert „nichtlokal“
Bedenken Sie den folgenden Code Snippet 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
Beachten Sie, dass das Ändern des Werts von x in der Funktion inner() keinen Einfluss auf den Wert von x in der Funktion Outer() hat . Dies liegt daran, dass inner() eine lokale Variable mit dem Namen x erstellt, die die äußere Variable mit demselben Namen überschattet.
Jetzt ändern wir den Code mit „nonlocal“:
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 wird durch die Verwendung von „nonlocal“ in der inner()-Funktion eine Verknüpfung zur x-Variablen im Outer()-Bereich hergestellt. Indem wir die Variable innerhalb der inneren Funktion ändern, ändern wir effektiv dieselbe Variable im äußeren Bereich.
Verwendung von „global“ vs. „nichtlokal“
Die Funktion „global Das Schlüsselwort „kann auch verwendet werden, um auf globale Variablen zuzugreifen und diese zu ändern, es verhält sich jedoch anders als „nicht lokal“. „global“ bindet die Variable an den wirklich globalen Bereich, während „nonlocal“ sie an den nächstgelegenen umschließenden Bereich bindet.
Betrachten Sie den folgenden Codeausschnitt mit „global“:
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
Wie Sie sehen können, wirkt sich die Änderung des Werts von x in der inneren Funktion jetzt auf die globale Variable aus x anstelle des äußeren()-Bereichs.
Zusammenfassung
„nonlocal“ ist ein wichtiges Python-Schlüsselwort, mit dem Sie von verschachtelten Funktionen aus auf Variablen in äußeren Bereichen zugreifen und diese ändern können ohne den globalen Namensraum zu verschmutzen. Es bietet eine klare und effiziente Möglichkeit, mit Daten über mehrere Bereiche hinweg zu arbeiten und den Code besser lesbar und wartbar zu machen.
Das obige ist der detaillierte Inhalt vonWie funktioniert das „nonlocal'-Schlüsselwort von Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!