Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Deklaration und Analyse nichtlokaler und globaler Schlüsselwörter in Python

Einführung in die Deklaration und Analyse nichtlokaler und globaler Schlüsselwörter in Python

高洛峰
高洛峰Original
2017-03-13 09:29:111606Durchsuche

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
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
Ü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
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

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)


Ergebnisse

# inner: 2
# outer: 1
# global: 0


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)

global


Immer noch das Gleiche, schauen Sie sich ein Beispiel an:
# inner: 2
# outer: 2
# global: 0



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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn