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
Freigeben: 2024-12-11 16:20:14
Original
587 Leute haben es durchsucht

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()
Nach dem Login kopieren

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
Nach dem Login kopieren

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]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage