Dieser ArtikelDie Deklaration und Analyse der Schlüsselwörter „nonlocal“ und „global“ in Python ist eine ausführliche Einführung. Ich glaube, dass sie für jeden, der sie benötigt, einen gewissen Referenzwert hat Besuchen Sie uns unten.
1. Globale und nichtlokale Deklarationen in Python
Der folgende Code
a = 10
def foo():
a = 100
Nach dem Login kopieren
Das Ergebnis a der Ausführung von foo() ist immer noch 10
Zuweisung an Variable in Funktion, Die Variable ist immer gebunden. Dieses Verhalten kann mit der globalen Anweisung geändert werden.
>>> a
10
>>> def foo():
... global a
... a = 100
...
>>> a
10
>>> foo()
>>> a
100
Nach dem Login kopieren
Überprüfen Sie beim Parsen des Namens zunächst den lokalen Bereich und dann Schicht für Schicht den durch die externe verschachtelte Funktion definierten Bereich von innen nach außen , wie z. B. Finden Der globale Befehlsraum und der integrierte Namespace werden nicht durchsucht.
Sie können zwar Schicht für Schicht nach Variablen suchen, aber ..python2 unterstützt nur den innersten Bereich (lokale Variablen) und den globalen Befehlsraum (gloabl), was bedeutet, dass interne Funktionen in lokalen Variablen definiert sind Externe Funktionen können nicht neu zugewiesen werden.
def countdown(start):
n = start
def decrement():
n -= 1
Nach dem Login kopieren
In Python2 kann die Lösung sein: Geben Sie den geänderten Wert ein Eine Liste oder ein Wörterbuch. In Python3 können Sie die nichtlokale Anweisung verwenden, um die Änderung abzuschließen mit dem globalen Schlüsselwort
nonlocal
def countdown(start):
n = start
def decrement():
nonlocal n
n -= 1
Nach dem Login kopieren
Zunächst muss klar sein, dass das Schlüsselwort nonlocal im Abschluss definiert ist. Bitte schauen Sie sich den folgenden Code an:
Ergebnis
Fügen Sie nun „nonlocal“ zum hinzu Schlüsselwortdeklaration:
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
Ergebnisse
# inner: 2
# outer: 1
# global: 0
Nach dem Login kopieren
Siehe Ist da ein Unterschied? Dies ist eine Funktion, die in einer Funktion verschachtelt ist. Bei Verwendung von nonlocal wird deklariert, dass die Variable nicht nur in der verschachtelten Funktion inner() gültig ist, sondern in der gesamten großen Funktion.
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
global
Immer noch das Gleiche, schauen Sie sich ein Beispiel an:
# inner: 2
# outer: 2
# global: 0
Nach dem Login kopieren
Infolgedessen funktioniert
global auf Variablen in der gesamten Umgebung, nicht auf Variablen in Funktionsklassen.
Das obige ist der detaillierte Inhalt vonEinführung in die Deklaration und Analyse nichtlokaler und globaler Schlüsselwörter in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!