Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Variablen in einschließenden Bereichen in Python ändern?
Variablen im umschließenden Bereich ändern: Ein pythonisches Rätsel
In Python regelt das Konzept des Bereichs die Sichtbarkeit und Zugänglichkeit von Variablen. Beim Umgang mit verschachtelten und umschließenden Bereichen ist es nicht immer einfach, Variablen in einem äußeren Bereich zu ändern.
Das Problem: UnboundLocalError
Bedenken Sie den folgenden Codeausschnitt:
def A(): b = 1 def B(): # Access 'b', no problem print(b) # Attempt to modify 'b' b = 2 # UnboundLocalError B() A()
Hier ist die Variable b im umschließenden Bereich von B definiert, aber es ist nicht global. Der Versuch, b direkt in B zu ändern, führt zu einem UnboundLocalError, da b nicht als lokale Variable in B deklariert ist.
Die Lösung: Den nicht-globalen Geltungsbereich nutzen
In Python 3 kommt das Schlüsselwort nonlocal zur Rettung. Es ermöglicht Ihnen, Variablen in einem umschließenden, nicht-globalen Bereich zu ändern.
def A(): b = 1 def B(): nonlocal b b = 2 B() print(b) # Output: 2
Python 2s Alternative: Veränderlichkeit zur Rettung
Während Python 3 die praktische Möglichkeit bietet Mit dem Schlüsselwort „nonlocal“ bietet Python 2 keine direkte Lösung. Eine Problemumgehung besteht darin, veränderliche Objekte (z. B. Listen oder Wörterbücher) zu verwenden und deren Werte zu ändern, anstatt Variablen neu zuzuweisen.
def foo(): a = [] def bar(): a.append(1) bar() bar() print(a) # Output: [1, 1]
Durch Bearbeiten der Liste a, bei der es sich um ein Objekt handelt, können Sie deren Inhalt währenddessen im Wesentlichen ändern Einhaltung der Geltungsbereichsregeln von Python 2.
Das obige ist der detaillierte Inhalt vonWie kann ich Variablen in einschließenden Bereichen in Python ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!