Globale Variablen gelten über den gesamten Code – lokale Variablen hingegen nur in bestimmten Bereichen.
Lokale Variablen
Als lokale Variablen bezeichnet man die Variablen, die nur in bestimmten Bereichen gelten, wie zum Beispiel in Funktionen oder Klassen. Schauen wir uns hierzu mal ein Beispiel an.
def gib_mir_fuenf():
x = 5
return x
Hier haben wir eine Funktion, in der wir der Variable x den Wert 5 zuweisen und danach x zurückgeben. Die Variable x existiert ausschließlich nur in dieser Funktion, außerhalb nicht. Versuchen wir nämlich direkt unter der Funktion x auszugeben mit einem print()-Befehl, passiert folgendes:
def gib_mir_fuenf():
x = 5
return x
print(x)
### Output:
>>> NameError: name 'x' is not defined
Wir erhalten eine Fehlermeldung, und zwar einen NameError – denn x ist nicht definiert, genauer gesagt weiß das Programm nicht was x sein soll, da er keinen zugehörigen Wert dafür findet.
Globale Variablen
Globale Variablen sind Variablen, die im gesamten Code gültig sind. Man kann also überall auf sie zugreifen. Definieren wir beispielsweise die Variable x vor der Funktion, können wir sie problemlos in dieser verwenden.
def print_x():
print(x)
x = 5
print_x()
### Output:
>>> 5
Wir können ohne Probleme den print()-Befehl für die Variable anwenden und es wird auch der Wert ausgegeben, den wir x zugewiesen haben.
Wir haben jedoch ein Problem – versuchen wir innerhalb der Funktion den Wert von x abzuändern, wir dies nur innerhalb dieser Funktion übernommen. Nur dort gilt der veränderte Wert von x. Sobald wir wieder aus der Funktion raus sind, gilt wieder der Wert, den x zuvor hatte.
Schauen wir uns mal ein genaueres Beispiel an:
def change_x():
x = 7
return x
x = 5
change_x()
print(x)
### Output:
>>> 5
Vor der Funktion hat x den Wert 5. Innerhalb der Funktion setzen wir den Wert auf 7 – wenn wir x außerhalb der Funktion ausgeben, erhalten wir aber wieder den Wert 5.
Wollen wir eine Variable innerhalb einer Funktion permanent ändern, müssen wir x als global definieren. Das können wir machen, indem wir, bevor wir die Variable benutzen, einfach global vor die Variable schreiben.
def change_x():
global x
x = 7
return x
x = 5
change_x()
print(x)
### Output:
>>> 7
Wir sehen hier, wenn wir innerhalb der Funktion die Variable x als global definieren mit global x gelten die Änderungen auch außerhalb der Funktion, denn wenn wir x mit dem print()-Befehl nach der Funktion ausführen, wird uns eine 7 ausgegeben.
Warum Du globale Variablen vermeiden solltest
Als kleiner Tipp am Ende: Versuche, wenn möglich, globale Variablen so gut wie möglich zu vermeiden. Oft entstehen durch diese nur böse Fehler, vor allem wenn man öfters den gleichen Variablennamen verwendet.