Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich Variablen in äußeren Bereichen innerhalb verschachtelter Python-Funktionen ändern?

Wie kann ich Variablen in äußeren Bereichen innerhalb verschachtelter Python-Funktionen ändern?

Susan Sarandon
Freigeben: 2024-12-12 11:04:09
Original
522 Leute haben es durchsucht

How Can I Modify Variables in Outer Scopes within Nested Python Functions?

Ändern von Variablen in äußeren Bereichen

Das Kapseln von Funktionen ist eine gängige Praxis in Python, stellt jedoch Herausforderungen beim Zugriff auf und beim Ändern von in äußeren Bereichen definierten Variablen dar Bereiche. In diesem Artikel wird untersucht, wie Variablen geändert werden, die nicht global definiert sind, aber in einem umschließenden Bereich existieren.

Python-Bereich und Variablenauflösung

Python folgt dem lexikalischen Bereich, was bedeutet, dass Variablen vorhanden sind basierend auf ihrer Position im Quellcode aufgelöst. Äußere Bereiche (umschließende Funktionen) können auf Variablen zugreifen, die in ihren verschachtelten Bereichen (inneren Funktionen) definiert sind, aber das Gegenteil ist nicht der Fall. Der Versuch, eine Variable in einem äußeren Bereich zu ändern, ohne sie als global zu deklarieren, löst einen UnboundLocalError aus.

Ändern von Variablen des äußeren Bereichs

In Python 3 bietet das Schlüsselwort nonlocal eine Lösung . Es ermöglicht die Änderung von Variablen innerhalb innerer Funktionen, selbst wenn sie in äußeren Bereichen definiert sind. Wenn eine Variable als nicht lokal deklariert ist, geht Python davon aus, dass sie an den äußeren Bereich gebunden ist.

Beispiel:

def outer():
    a = 5

    def inner():
        nonlocal a
        a += 1
        print(a)

outer()
Nach dem Login kopieren

Ausgabe:

6
Nach dem Login kopieren

Problemumgehung für Python 2

Für Python 2 gibt es kein direktes Äquivalent zu „nonlocal“. Es ist jedoch möglich, den gleichen Effekt mit veränderlichen Objekten wie Listen oder Wörterbüchern zu erzielen. Durch Ändern des Inhalts des veränderlichen Objekts kann der Wert der Variablen im äußeren Bereich indirekt geändert werden.

Beispiel:

def outer():
    a = []

    def inner():
        a.append(1)

inner()
inner()
print(a)
Nach dem Login kopieren

Ausgabe:

[1, 1]
Nach dem Login kopieren

Durch das Verständnis der Bereichsregeln von Python und die Verwendung der entsprechenden Techniken ist es möglich, auf Variablen in äußeren, nicht-globalen Bereichen zuzugreifen und diese zu ändern, was die Kapselung und Umsetzung erleichtert gewünschtes Programmverhalten.

Das obige ist der detaillierte Inhalt vonWie kann ich Variablen in äußeren Bereichen innerhalb verschachtelter Python-Funktionen ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage