Heim >Backend-Entwicklung >Python-Tutorial >Wie greife ich über verschachtelte Funktionen in Python auf nichtlokale Variablen zu?
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>
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>
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>
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!