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

高洛峰
Freigeben: 2017-03-13 09:29:11
Original
1659 Leute haben es durchsucht

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!