Pythons global-Schlüsselwort meistern: Wie & wann man es verwendet
Pythons global-Schlüsselwort meistern: Wie & wann man es verwendet
Dieser Leitfaden erklärt das Python global-Schlüsselwort, seine Regeln, praktische Anwendungsfälle und Best Practices für die Verwaltung globaler Variablen über Module hinweg.
Was ist das global-Schlüsselwort?
In Python erlaubt das global-Schlüsselwort, zu deklarieren, dass eine Variable innerhalb einer Funktion auf eine Modul-Variable verweist, anstatt eine neue lokale zu erstellen. Dies ist essenziell, wenn eine Funktion eine Variable lesen oder modifizieren muss, die außerhalb ihres eigenen Gültigkeitsbereichs existiert.
Regeln für die Verwendung von global
- Variablen, die innerhalb einer Funktion erstellt werden, sind standardmäßig lokal.
- Variablen, die auf Modulebene definiert sind, sind automatisch global;
globalist unnötig, wenn sie nur gelesen werden. - Verwenden Sie
globalinnerhalb einer Funktion, wenn Sie einer Modul-Variable zuweisen möchten. - Das Platzieren von
globalaußerhalb einer Funktion hat keine Wirkung.
Praktische Verwendung von global
Nachfolgend sind illustrative Beispiele, die sowohl Fallstricke als auch den korrekten Ansatz demonstrieren.
Beispiel 1: Zugriff auf eine globale Variable aus einer Funktion
c = 1 # globale Variable
def add():
print(c)
add()
Ausgabe:
1
Hier wird c erfolgreich gelesen, da keine Zuweisung innerhalb von add() erfolgt.
Beispiel 2: Versuch, eine globale Variable ohne global zu modifizieren
c = 1 # globale Variable
def add():
c = c + 2 # versucht c zu modifizieren
print(c)
add()
Ausgabe:
UnboundLocalError: local variable 'c' referenced before assignment
Der Fehler tritt auf, weil Python c als neue lokale Variable behandelt, die vor Zuweisung referenziert wird.
Beispiel 3: Globale Variable mit global modifizieren
c = 0 # globale Variable
def add():
global c
c = c + 2
print("Inside add():", c)
add()
print("In main:", c)
Ausgabe:
Inside add(): 2 In main: 2
Durch Deklaration von global c aktualisiert die Funktion die Modul-Variable c, und die Änderung ist außerhalb der Funktion sichtbar.
Globale Variablen über Python-Module teilen
Für größere Anwendungen ist es üblich, Konfiguration in einem dedizierten Modul zu zentralisieren, z. B. config.py. Andere Module können diese Werte importieren und modifizieren, was konsistenten State über das Programm ermöglicht.
Beispiel 4: Cross-Module Globale Variablen
Erstellen Sie config.py:
a = 0
b = "empty"
Erstellen Sie update.py zum Modifizieren der Globals:
import config
config.a = 10
config.b = "alphabet"
Erstellen Sie main.py zur Verifikation der Änderungen:
import config
import update
print(config.a)
print(config.b)
Ausgabe:
10 alphabet
Dieses Pattern hält geteilten State an einem Ort, während kontrollierte Updates aus anderen Modulen ermöglicht werden.
Verwendung von global in verschachtelten Funktionen
Wenn eine verschachtelte Funktion eine Variable modifizieren muss, die lokal zu einer äußeren Funktion ist, kann das global-Schlüsselwort dennoch angewendet werden, um eine echte globale Variable zu erstellen.
Beispiel 5: Globale Variable in einer verschachtelten Funktion
def foo():
x = 20
def bar():
global x
x = 25
print("Before calling bar:", x)
print("Calling bar now")
bar()
print("After calling bar:", x)
foo()
print("x in main:", x)
Ausgabe:
Before calling bar: 20 Calling bar now After calling bar: 20 x in main: 25
Innerhalb von foo() bleibt x eine lokale Variable. Die verschachtelte bar() deklariert x als global, sodass die Zuweisung die Modul-Variable x betrifft und nach Beendigung von foo() sichtbar ist.
Während global nützlich sein kann, ist es generell besser, Funktionen zu entwerfen, die neue Werte zurückgeben, anstatt globalen State zu mutieren. Dies fördert klareren Code und einfacheres Testen. Für detaillierte Sprachregeln siehe die offizielle Python-Dokumentation zum global Statement.
Python
- Python-Datentypen meistern: Praxisleitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Python pass-Statement meistern: Praxisleitfaden
- Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
- Python Global, Local & Nonlocal Variablen verstehen
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Python Iteratoren meistern: Funktionsweise und Erstellung eigener Iteratoren
- Python Closures erklärt: Wie verschachtelte Funktionen Variablen erfassen
- Python datetime meistern: Praktischer Leitfaden zu Datumsangaben, Zeiten und Zeitzonen
- Python Überblick: Hochlevel, lesbar, interaktiv & objektorientiert