So verwenden Sie globale Variablen in Python (globales Schlüsselwort)

Erfahren Sie, wie globale Variablen in Python funktionieren. Verstehen Sie den Variablenbereich, lokale und globale Namespaces und erfahren Sie, wie Sie Variablen mithilfe des globalen Schlüsselworts ändern.

Probieren Sie diese Lösung im Editor aus

Übersicht

Das Verständnis von Namespaces und Variablenbereich ist für das Schreiben fehlerfreier Software in Python von entscheidender Bedeutung. Der Bereich bestimmt, welche Teile Ihres Programms auf eine Variable zugreifen oder diese ändern können. Eine außerhalb aller Funktionen deklarierte Variable existiert im globalen Gültigkeitsbereich und kann überall im Modul gelesen werden.

Es entsteht jedoch ein Problem, wenn eine Funktion versucht, eine globale Variable zu ändern (neu zuzuweisen). Wenn Python eine Zuweisung innerhalb einer Funktion erkennt, geht es standardmäßig davon aus, dass die Variable lokal für die Funktion ist. Wenn Sie versuchen, eine globale Variable zu ändern, ohne sie als global zu deklarieren, erstellt Python eine lokale Variable mit demselben Namen und lässt die globale Variable unverändert (oder löst einen „UnboundLocalError“ aus).

Um Python explizit mitzuteilen, dass Sie eine Variable im globalen Namensraum ändern möchten, anstatt eine lokale zu erstellen, müssen Sie sie mit dem Schlüsselwort „global“ innerhalb der Funktion deklarieren. Obwohl die Verwendung globaler Variablen manchmal notwendig ist, wird sie bei der Entwicklung großer Software allgemein als schlechte Praxis angesehen, da sie die Verfolgung und das Debuggen von Zuständen erschwert.

Code- und Ausführungsausgabe

Dieses Skript demonstriert das Lesen globaler Variablen, die Variable Shadowing Trap und das Ändern globaler Variablen mithilfe des Schlüsselworts global.

global_variables.py
Versuchen Sie es im Editor
counter = 10 # Global variable

def read_counter():
    # Reading a global variable works out-of-the-box
    print("Reading global counter:", counter)

def shadow_counter():
    # Attempting to assign without 'global' creates a local variable
    counter = 20 # Shadowing
    print("Inside shadow function:", counter)

def modify_counter():
    global counter # Declaring we are writing to global scope
    counter = 50
    print("Inside modify function:", counter)

read_counter()
shadow_counter()
print("Counter after shadow function:", counter) # Remains 10

modify_counter()
print("Counter after modify function:", counter) # Now 50
Terminal-Ausgabe
Reading global counter: 10
Inside shadow function: 20
Counter after shadow function: 10
Inside modify function: 50
Counter after modify function: 50

Schrittweise Umsetzung

  • Deklarieren Sie Variablen, auf die global außerhalb eines Funktionsbereichs zugegriffen werden muss.
  • Lesen Sie globale Variablen innerhalb einer beliebigen Funktion, ohne spezielle Deklarationen hinzuzufügen.
  • Verwenden Sie das globale Schlüsselwort (z. B. global counter) innerhalb von Funktionen, wenn Sie den globalen Variablenwert ändern müssen.
  • Begrenzen Sie die Verwendung globaler Variablen, um Bereichsverwirrung und Namespace-Verschmutzung zu vermeiden.

Häufig gestellte Fragen

Was ist Variablenschatten in Python?

Shadowing tritt auf, wenn eine innerhalb eines lokalen Bereichs deklarierte Variable (z. B. eine Funktion) denselben Namen hat wie eine Variable in einem äußeren globalen Bereich. Die lokale Variable maskiert die globale Variable und macht sie innerhalb dieses Bereichs vorübergehend unzugänglich.

Was ist der Unterschied zwischen globalen und nichtlokalen Schlüsselwörtern?

Global wird verwendet, um auf Variablen zuzugreifen, die im äußersten Modulbereich definiert sind. nonlocal wird innerhalb verschachtelter Funktionen verwendet, um auf Variablen zuzugreifen, die im umschließenden (äußeren) Funktionsbereich definiert sind.

Verwandte Themen

Empfohlene Python-Ressourcen

Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.