Heim >Backend-Entwicklung >Python-Tutorial >Wie werden ungebundene lokale Variablenfehler in verschachtelten Funktionsbereichen behandelt?
UnboundLocalError in verschachtelten Funktionsbereichen auflösen
Der Python-Interpreter stößt auf einen UnboundLocalError, wenn er auf eine ungebundene lokale Variable innerhalb einer verschachtelten Funktion zugreift. Dieses Problem tritt auf, wenn eine verschachtelte Funktion versucht, eine in der äußeren Funktion deklarierte Variable zu ändern.
Beispiel:
Bedenken Sie den folgenden Code:
<code class="python">def outer(): ctr = 0 def inner(): ctr += 1 inner()</code>
Beim Ausführen dieses Codes generiert der Interpreter den folgenden Fehler:
Traceback (most recent call last): File "foo.py", line 9, in <module> outer() File "foo.py", line 7, in outer inner() File "foo.py", line 5, in inner ctr += 1 UnboundLocalError: local variable 'ctr' referenced before assignment
Ursache:
Obwohl verschachtelte Bereiche vorhanden sind, kann die innere Funktion nicht auf „ctr“ zugreifen ' Variable direkt, da sie in der äußeren Funktion definiert ist. Dies führt zu einer ungebundenen Variablen, die den UnboundLocalError auslöst.
Lösung:
Python 3 bietet die „nonlocal“-Anweisung, um die Neubindung von Variablen in verschachtelten Bereichen zu ermöglichen. Durch Ändern des Codes, sodass er „nonlocal“ enthält, wird das Problem behoben:
<code class="python">def outer(): ctr = 0 def inner(): nonlocal ctr ctr += 1 inner()</code>
Für Python 2-Benutzer sind alternative Ansätze erforderlich:
Das obige ist der detaillierte Inhalt vonWie werden ungebundene lokale Variablenfehler in verschachtelten Funktionsbereichen behandelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!