Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Variablen in einschließenden Bereichen in Python ändern?

Wie kann ich Variablen in einschließenden Bereichen in Python ändern?

Linda Hamilton
Linda HamiltonOriginal
2024-12-11 16:20:14583Durchsuche

How Can I Modify Variables in Enclosing Scopes in Python?

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!

Stellungnahme:
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