Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Analyse von nichtlokalen und globalen

Detaillierte Analyse von nichtlokalen und globalen

Y2J
Y2JOriginal
2017-05-09 15:02:002649Durchsuche

Dieser Artikel stellt Ihnen hauptsächlich die relevanten Informationen zur Deklaration und Analyse der nichtlokalen und globalen Schlüsselwörter in Python vor. Ich glaube, dass sie für alle Freunde, die sie benötigen, einen gewissen Referenzwert haben Lesen Sie es gemeinsam.

1. Globale und nichtlokale Deklarationen in Python

Der folgende Code

a = 10 
 
def foo(): 
 a = 100

wird ausgeführt. Das Ergebnis von foo() a ist immer noch die Zuweisung an die
-Variable

in 10

-Funktion . Die Variable ist immer an die lokale Namespace, 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 eines Namens zunächst den lokalen Bereich und dann Schicht für Schicht den durch die externe verschachtelte Funktion definierten Bereich. Wenn

nicht gefunden werden kann, durchsuchen Sie Globaler Befehlsraum und integrierte Namespaces.

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), also

Intern Funktionen können lokale Variablen, die in externen Funktionen definiert sind, nicht neu zuweisen

def countdown(start): 
 n = start 
 def decrement(): 
  n -= 1
In Python2 kann die Lösung darin bestehen, die geänderten Werte in eine Liste einzufügen Im Wörterbuch können Sie in Python3 die nichtlokale Anweisung verwenden, um die Änderung abzuschließen

def countdown(start): 
 n = start 
 def decrement(): 
  nonlocal n 
  n -= 1

2. Nichtlokale und globale Python-Schlüsselwortanalyse

nonlocal

Zunächst muss klar sein, dass das Schlüsselwort nonlocal im Abschluss definiert ist. Schauen Sie sich bitte den folgenden Code an:

x = 0
def outer():
 x = 1
 def inner():
  x = 2
  print("inner:", x)

 inner()
 print("outer:", x)

outer()
print("global:", x)
Ergebnis

# inner: 2
# outer: 1
# global: 0
Fügen Sie nun das nichtlokale Schlüsselwort zum zu deklarierenden Abschluss hinzu:

x = 0
def outer():
 x = 1
 def inner():
  nonlocal x
  x = 2
  print("inner:", x)

 inner()
 print("outer:", x)

outer()
print("global:", x)

Ergebnis

# inner: 2
# outer: 2
# global: 0
Sehen Sie den 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.



global


Immer noch das Gleiche, schauen Sie sich ein Beispiel an:

Ergebnis
x = 0
def outer():
 x = 1
 def inner():
  global x
  x = 2
  print("inner:", x)

 inner()
 print("outer:", x)

outer()
print("global:", x)

global funktioniert auf Variablen in der gesamten Umgebung, nicht auf Variablen in Funktionsklassen.
# inner: 2
# outer: 1
# global: 2

Zusammenfassung[Verwandte Empfehlungen]

1.

Python kostenloses Video-Tutorial

2.

Python-Grundlagen-Einführungs-Tutorial

3.

Python trifft auf Datenerfassungs-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Analyse von nichtlokalen und globalen. 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