Einführung in die Verwendung und Unterschiede von nichtlokal und global in Python3 (mit Beispielen)

不言
Freigeben: 2019-03-07 17:23:09
nach vorne
4036 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Einführung in die Verwendung und den Unterschied zwischen nicht lokal und global in Python3 (mit Beispielen). Ich hoffe, dass er für Sie hilfreich ist.

Schlüsselwort nonlocal

In Python 2.x können Abschlüsse nur die Variablen der externen Funktion lesen, diese aber nicht überschreiben. Um dieses Problem zu lösen, hat Python 3.x das Schlüsselwort nonlocal eingeführt. Durch die Deklaration von Variablen mit nonlocal innerhalb des Abschlusses kann der Interpreter den Variablennamen in der äußeren Funktion finden.

Hinweis: Das Schlüsselwort nonlocal: erscheint im globalen Bereich und im lokalen Bereich. Der globale Bereich bezieht sich auf den Bereich des Moduls, in dem sich der aktuelle Code befindet, und der lokale Bereich bezieht sich auf den Bereich der aktuellen Funktion oder Methode. Code im lokalen Bereich kann Variablen im externen Bereich (einschließlich des globalen Bereichs) lesen, diese jedoch nicht ändern. Wenn Sie es ändern möchten, müssen Sie hier das Schlüsselwort global verwenden.

Beispiel

Die Funktion des Schlüsselworts nonlocal ähnelt der des Schlüsselworts global. Sie können es mit dem Schlüsselwort nonlocal ändern in einer verschachtelten Funktion Variablen in verschachtelten Bereichen.

Schauen Sie sich zwei Beispiele an

Beispiel 1

name = 'pythontab'
def func()
global name
name = 'pythontab.com'
func()
print(name)
Nach dem Login kopieren

Ergebnis:

pythontab.com
Nach dem Login kopieren
Nach dem Login kopieren

Beispiel 2

def func():
name = 'pythontab'
def foo():
    nonlocal name
    name = 'pythontab.com'
foo()
print(name)
func()
Nach dem Login kopieren

Ergebnis:

pythontab.com
Nach dem Login kopieren
Nach dem Login kopieren

Beachten Sie, dass in Beispiel 2 das globale Schlüsselwort nicht verwendet wurde, um den Wert von name zu ändern.

Zusammenfassung

Die Hauptunterschiede sind wie folgt:

Die Funktionen der beiden sind unterschiedlich. Nach dem Ändern einer Variablen mit dem Schlüsselwort „global“ wird die Variable als globale Variable identifiziert. Durch das Ändern der Variablen mit dem Schlüsselwort „nonlocal“ wird die Variable als lokale Variable in der übergeordneten Funktion identifiziert. Wenn in der Funktion der oberen Ebene keine lokale Variable vorhanden ist und diese lokale Variable vorhanden ist, tritt an der nichtlokalen Position ein Fehler auf (die Funktion der obersten Ebene, die nichtlokale geänderte Variablen verwendet, meldet definitiv einen Fehler).

    Der Anwendungsbereich der beiden ist unterschiedlich. Das globale Schlüsselwort kann überall verwendet werden, einschließlich der Funktion der obersten Ebene und verschachtelter Funktionen. Auch wenn die Variable zuvor nicht definiert wurde, kann sie direkt nach der globalen Änderung verwendet werden, während das nicht lokale Schlüsselwort nur in verschachtelten Funktionen verwendet werden kann außerhalb In der Layer-Funktion werden entsprechende lokale Variablen definiert, sonst kommt es zu einem Fehler (siehe 1)

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung und Unterschiede von nichtlokal und global in Python3 (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
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!