Heim > Backend-Entwicklung > Python-Tutorial > nichtlokales Schlüsselwort in Python

nichtlokales Schlüsselwort in Python

高洛峰
Freigeben: 2016-10-20 09:42:53
Original
2431 Leute haben es durchsucht

In diesem Artikel stellen wir die Verwendung von „Pythons Schließung und Nichtlokal“ vor, da „Nichtlokal“ ein neues Schlüsselwort in Python3.0 ist und von Python2.x nicht unterstützt wird. Der Artikel schlägt vor, das eingebettete Problem in Python2.x zu lösen Die einzige Möglichkeit, externe Variablen aus einer Reihe von Funktionen zu referenzieren, besteht darin, das globale Schlüsselwort zum Definieren globaler Variablen zu verwenden. Eine andere mögliche Lösung besteht darin, eine Liste oder ein Wörterbuch anstelle des zu bearbeitenden Schlüsselworts zu verwenden.

Beispiele sind wie folgt:

1.python3.0 mit nicht-lokalen Schlüsselwörtern

>>> def outer():
        x = 1
        def inner():
            nonlocal x
            x = 2
            print("inner:", x)
        inner()
        print("outer:", x)
  
 >>> outer()
 inner: 2
 outer: 2
Nach dem Login kopieren

2.python2. x Verwenden Sie list oder dict, um

>>> def outer():
        x = [1]
        def inner():
            x[0] += 1 #修改x[0]保存的值
            print("inner:", x[0])
        inner()
        print("outer:", x[0])
 >>> outer()
 inner: 2
 outer: 2
Nach dem Login kopieren


Weitere Referenzen:

1. //stackoverflow.com/questions/1261875/python-nonlocal-statement

2. Ähnlichkeiten und Unterschiede zwischen der Bereichskettendefinition in Javascript und dem Python-Bereich

3.Offizielle Dokumentation:

„Die nicht-lokale Anweisung bewirkt, dass die aufgelisteten Bezeichner auf zuvor gebundene Variablen im nächstgelegenen umschließenden Bereich verweisen. Dies ist wichtig, da das Standardverhalten für die Bindung darin besteht, zuerst den lokalen Namespace zu durchsuchen. Die Anweisung ermöglicht es gekapseltem Code, Variablen außerhalb des Bereichs erneut zu binden lokaler Bereich neben dem globalen (Modul-)Bereich.

Namen, die in einer nicht-lokalen Anweisung aufgeführt sind, müssen sich im Gegensatz zu den in einer globalen Anweisung aufgeführten Namen auf bereits vorhandene Bindungen in einem umschließenden Bereich beziehen (dem Bereich, in dem eine neue Bindung erstellt wird). erstellt werden soll, kann nicht eindeutig bestimmt werden).

Namen, die in einer nicht-lokalen Anweisung aufgeführt sind, dürfen nicht mit bereits vorhandenen Bindungen im lokalen Bereich kollidieren.“


Verwandte Etiketten:
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