Heim >Backend-Entwicklung >Python-Tutorial >Können verschachtelte Funktionen Variablen in einschließenden Bereichen in Python ändern?
Ungebundene lokale Variablen in verschachtelten Funktionsbereichen
In Python greifen verschachtelte Funktionen auf Variablen zu, die in ihren umschließenden Bereichen definiert sind, was die Wiederverwendung und Kapselung von Code ermöglicht. Der Versuch, eine Variable in einem umschließenden Bereich innerhalb einer verschachtelten Funktion zu ändern, kann jedoch zu einem „UnboundLocalError“ führen, wenn die Variable nicht als nicht lokal oder global deklariert ist.
Beachten Sie den folgenden Code:
<code class="python">def outer(): ctr = 0 def inner(): ctr += 1</code>
Wenn Sie inner() aufrufen, wird ein „UnboundLocalError“ angezeigt, da ctr nicht in der inneren Funktion definiert ist. Um dies zu beheben, können Sie die folgenden Ansätze verwenden:
Für Python 3 und höher:
Verwenden Sie das Schlüsselwort „nonlocal“
Das Schlüsselwort „nonlocal“ ermöglicht dies um Variablen, die in einem umschließenden Bereich definiert sind, innerhalb einer verschachtelten Funktion zu ändern.
<code class="python">def outer(): ctr = 0 def inner(): nonlocal ctr ctr += 1</code>
Für Python 2 und früher:
Verwenden Sie eine Datenstruktur, um die Variable zu speichern
In Python 2 können verschachtelte Funktionen keine Variablen in umschließenden Bereichen ändern. Sie müssen daher eine Datenstruktur verwenden, um die Variable zu speichern und an die verschachtelte Funktion zu übergeben.
<code class="python">def outer(): ctr = [0] def inner(): ctr[0] += 1</code>
Ersetzen Sie alle Vorkommen von ctr in Ihrem Code mit ctr[0].
Das obige ist der detaillierte Inhalt vonKönnen verschachtelte Funktionen Variablen in einschließenden Bereichen in Python ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!