Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich Variablen in einem nicht-globalen, umschließenden Bereich in Python ändern?

Wie kann ich Variablen in einem nicht-globalen, umschließenden Bereich in Python ändern?

Susan Sarandon
Freigeben: 2024-12-28 05:01:09
Original
585 Leute haben es durchsucht

How Can I Modify Variables in a Non-Global, Enclosing Scope in Python?

Ändern von Variablen in nicht-globalen, einschließenden Bereichen in Python

Bei der Arbeit mit verschachtelten Funktionen ist es oft notwendig, auf definierte Variablen zuzugreifen und diese zu ändern in einem umschließenden Bereich, der weder global noch durch dynamisches Scoping zugänglich ist. Dies kann in Python, das lexikalisches Scoping implementiert, zu Herausforderungen führen.

Betrachten Sie das folgende Beispiel:

def A():
    b = 1
    def B():
        # Can access 'b' but cannot modify it directly
        print(b)
    B()
A()
Nach dem Login kopieren

In diesem Code ist die Variable b im umschließenden Gültigkeitsbereich von B() definiert. Funktion. Der Versuch, b direkt in B() zu ändern, führt jedoch zu einem UnboundLocalError, da es nicht als lokal für B() deklariert ist.

Um dieses Problem zu beheben, bietet Python zwei Lösungen an:

Python 3:Verwenden Sie das Schlüsselwort „nonlocal“

In Python 3 können Sie mit dem Schlüsselwort „nonlocal“ Variablen in ändern Nächster umschließender Bereich ohne Globals. So verwenden Sie es:

def foo():
    a = 1
    def bar():
        nonlocal a
        a = 2
    bar()
    print(a)  # Output: 2
Nach dem Login kopieren

In diesem Beispiel macht das Schlüsselwort nonlocal eine nicht-lokale Variable innerhalb der bar()-Funktion und ermöglicht so deren Änderung.

Python 2 :Verwenden Sie veränderliche Objekte

Auf Python 2, wo nichtlokal nicht verfügbar ist, können Sie veränderliche Objekte verwenden, z als Listen oder Wörterbücher. Anstatt Variablen neu zuzuweisen, können Sie den Wert des Objekts ändern:

def foo():
    a = []
    def bar():
        a.append(1)
    bar()
    bar()
    print(a)  # Output: [1, 1]
Nach dem Login kopieren

Hier ist die Variable a veränderbar und die Funktion bar() kann ihre Werte durch Anhängen an die Liste ändern.

Das obige ist der detaillierte Inhalt vonWie kann ich Variablen in einem nicht-globalen, umschließenden Bereich 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