Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich nicht-globale Variablen in äußeren Bereichen in Python ändern?

Wie kann ich nicht-globale Variablen in äußeren Bereichen in Python ändern?

Barbara Streisand
Barbara StreisandOriginal
2024-12-16 12:06:15318Durchsuche

How Can I Modify Non-Global Variables in Outer Scopes in Python?

Ändern nicht-globaler Variablen im äußeren Gültigkeitsbereich in Python

In Python gehören Variablen innerhalb einer Funktion normalerweise zum lokalen Gültigkeitsbereich, sofern sie nicht ausdrücklich als global deklariert sind. Allerdings ist es manchmal notwendig, Variablen zu ändern, die in einem äußeren (umschließenden), aber nicht globalen Bereich definiert sind. In dieser Frage wird untersucht, wie dies erreicht werden kann.

Angesichts des Beispielcodes:

def A():
    b = 1
    def B():
        # Access to 'b' is possible here.
        print(b)
        # Direct modification of 'b' fails.
    B()
A()

Die Variable b in Funktion B befindet sich in einem nicht globalen, umschließenden Bereich. Versuche, b direkt zu ändern, führen zu einem UnboundLocalError. Das globale Schlüsselwort kann nicht verwendet werden, da b nicht auf globaler Ebene deklariert ist.

Python 3-Lösung:

Nichtlokaler Bereich (Python 3.x) kann sein Wird zur Lösung dieses Problems verwendet:

def A():
    b = 1
    def B():
        nonlocal b  # Nonlocal keyword
        b = 2
    B()
    print(b)  # Output: 2
A()

Python 2 Lösung:

Veränderliche Objekte (Python 2.x):

Anstatt Variablen direkt neu zuzuweisen, verwenden Sie veränderliche Objekte (z. B. Listen, Diktate) und ändern Sie ihre Werte:

def A():
    b = []
    def B():
        b.append(1)  # Mutation of 'b'
    B()
    B()
    print(b)  # Output: [1, 1]
A()

Das obige ist der detaillierte Inhalt vonWie kann ich nicht-globale Variablen in äußeren 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