Heim >Backend-Entwicklung >Python-Tutorial >Wie unterscheidet sich das Python-Schlüsselwort „nonlocal' von „global' im Bereich verschachtelter Funktionen?
Die Macht von „nichtlokal“ in Python 3
In der Python-Programmierung können Variablen nach ihrem Umfang klassifiziert werden:
Manchmal müssen Sie jedoch die Lücke zwischen diesen Bereichen schließen. Hier kommt das Schlüsselwort „nonlocal“ ins Spiel.
„nonlocal“ verstehen
„nonlocal“ wird in Python 3 verwendet, um eine Variable zu deklarieren, die in a existiert breiterer Geltungsbereich, wird aber nicht als global deklariert. Es ermöglicht Ihnen, auf Variablen aus eingeschlossenen Funktionen zuzugreifen und diese zu ändern, ohne dass sich dies auf die globalen Variablen mit demselben Namen auswirkt.
Auswirkungen von „nichtlokal“
Um den Unterschied zu veranschaulichen, betrachten Sie Folgendes das folgende Beispiel ohne „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 this In diesem Fall wird die Variable x innerhalb der inner()-Funktion als neue lokale Variable betrachtet, unabhängig vom x in der external()-Funktion und dem globalen x.
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 Szenario ermöglicht das Schlüsselwort „nonlocal“ der x-Variablen innerhalb der inner()-Funktion, auf die Variable zu verweisen und sie zu ändern x-Variable in der Funktion „outer()“. Die innerhalb der inner()-Funktion vorgenommenen Änderungen bleiben in der external()-Funktion bestehen.
Unterschied zu „global“
„nonlocal“ unterscheidet sich vom Schlüsselwort „global“. dadurch, dass es den Zugriff und die Änderung von Variablen aus geschlossenen Bereichen ermöglicht, während „global“ auf Variablen aus dem wirklich globalen Bereich zugreift und diese ändert.
Verwenden „global“ im obigen Beispiel würde zu folgender Ausgabe führen:
inner: 2 outer: 1 global: 2
In diesem Fall wäre die x-Variable innerhalb der inner()-Funktion an das globale x gebunden und alle Änderungen würden sich auf den Wert auswirken der globalen Variablen und nicht der in der Funktion „outer()“.
Fazit
„nonlocal“ bietet einen leistungsstarken Mechanismus für den Zugriff und das Ändern von Variablen aus eingeschlossenen Bereichen in Python 3. Dadurch können Sie die Fallstricke des Änderns globaler Variablen innerhalb verschachtelter Funktionen vermeiden und eine organisiertere und modularere Codestruktur beibehalten.
Das obige ist der detaillierte Inhalt vonWie unterscheidet sich das Python-Schlüsselwort „nonlocal' von „global' im Bereich verschachtelter Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!