Wie greife ich über verschachtelte Funktionen in Python auf nichtlokale Variablen zu?

DDD
Freigeben: 2024-10-21 18:38:29
Original
835 Leute haben es durchsucht

How to Access Nonlocal Variables from Nested Functions in Python?

Zugriff auf nichtlokale Variablen in verschachtelten Funktionsbereichen

In Python ermöglichen verschachtelte Funktionsbereiche den Zugriff auf umschließende Bereiche. Der Versuch, eine Variable in einem umschließenden Bereich innerhalb einer verschachtelten Funktion zu ändern, kann jedoch zu einem UnboundLocalError führen.

Um dieses Problem zu beheben, haben Sie mehrere Möglichkeiten:

1. Verwendung des Schlüsselworts „nonlocal“ (Python 3):

Für Python 3 und höher ermöglicht Ihnen das Schlüsselwort „nonlocal“, nichtlokale Variablen innerhalb verschachtelter Funktionen neu zu binden.

<code class="python">def outer():
    ctr = 0

    def inner():
        nonlocal ctr
        ctr += 1

    inner()</code>
Nach dem Login kopieren

2. Indirekter Zugriff über Listen (Python 2 und 3):

In Python 2 und 3 können Sie eine Liste verwenden, um die Variable zu speichern und sie indirekt innerhalb der verschachtelten Funktion zu erhöhen.

<code class="python">ctr = [0]

def inner():
    ctr[0] += 1</code>
Nach dem Login kopieren

3. Verwendung globaler Variablen (nicht empfohlen):

Während die Verwendung von global den Zugriff auf Variablen aus umschließenden Bereichen ermöglichen kann, wird davon aufgrund möglicher Konflikte und Code-Lesbarkeitsproblemen im Allgemeinen abgeraten.

<code class="python">def outer():
    global ctr
    ctr = 0

    def inner():
        ctr += 1</code>
Nach dem Login kopieren

Die Auswahl der geeigneten Lösung hängt von Ihrer spezifischen Python-Version und den Designüberlegungen für Ihren Code ab.

Das obige ist der detaillierte Inhalt vonWie greife ich über verschachtelte Funktionen in Python auf nichtlokale Variablen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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!