Heim >Backend-Entwicklung >Python-Tutorial >Wie unterscheidet sich das „nonlocal'-Schlüsselwort von Python von „global' im 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!