Wie kann ich eine globale Variable in einer Funktion erstellen oder verwenden?
Wenn ich eine globale Variable in einer Funktion erstelle, wie kann ich diese globale Variable in einer anderen Funktion verwenden? Muss ich die globale Variable in einer lokalen Variable der Funktion speichern, die ihren Zugriff benötigt?
Sie können eine globale Variable in anderen Funktionen verwenden, indem Sie sie in jeder Funktion, die ihr etwas zuweist, als global
deklarieren:
globvar = 0
def set_globvar_to_one():
global globvar # Needed to modify global copy of globvar
globvar = 1
def print_globvar():
print(globvar) # No need for global declaration to read value of globvar
set_globvar_to_one()
print_globvar() # Prints 1
Ich vermute, der Grund dafür ist, dass Python, da globale Variablen so gefährlich sind, sicherstellen will, dass Sie wirklich wissen, dass Sie damit spielen, indem es ausdrücklich das Schlüsselwort global
verlangt.
Siehe andere Antworten, wenn Sie eine globale Variable modulübergreifend nutzen wollen.
Vielleicht möchten Sie sich mit dem Konzept der Namensräume beschäftigen. In Python ist das Modul der natürliche Ort für globale Daten:
Jedes Modul hat seine eigene private Symboltabelle, die von allen im Modul definierten Funktionen als globale Symboltabelle verwendet wird. Auf diese Weise kann der Autor eines Moduls globale Variablen im Modul verwenden, ohne sich Gedanken über versehentliche Zusammenstöße mit den globalen Variablen eines Benutzers machen zu müssen. Andererseits können Sie, wenn Sie wissen, was Sie tun, die globalen Variablen eines Moduls mit der gleichen Notation ansprechen, die Sie für die Funktionen des Moduls verwenden: "modname.itemname".
Eine spezielle Verwendung von global-in-a-module wird hier beschrieben - How do I share global variables across modules?, und der Vollständigkeit halber wird der Inhalt hier wiedergegeben:
Der klassische Weg, Informationen innerhalb eines Programms modulübergreifend zu nutzen, ist die Erstellung eines speziellen Konfigurationsmoduls (oft config oder cfg genannt). Importieren Sie das Konfigurationsmodul einfach in alle Module Ihrer Anwendung; das Modul wird dann als globaler Name verfügbar. Da es nur eine Instanz jedes Moduls gibt, werden alle Änderungen, die am Modulobjekt vorgenommen werden, überall übernommen. Zum Beispiel:
Datei: config.py
x = 0 # Standardwert für die Konfigurationseinstellung "x".
Datei: mod.py
importiere config config.x = 1
Datei: main.py
importiere config importieren mod print config.x
Wenn Sie in einer Funktion auf eine globale Variable verweisen wollen, können Sie das Schlüsselwort global verwenden, um zu erklären, welche Variablen global sind. Sie müssen es nicht in allen Fällen verwenden (wie jemand hier fälschlicherweise behauptet) - wenn der Name, auf den in einem Ausdruck verwiesen wird, nicht im lokalen Bereich oder in den Bereichen der Funktionen, in denen diese Funktion definiert ist, gefunden werden kann, wird er unter den globalen Variablen gesucht.
Wenn Sie jedoch eine neue Variable zuweisen, die in der Funktion nicht als global deklariert ist, wird sie implizit als lokal deklariert und kann jede bestehende globale Variable mit demselben Namen überschatten.
Außerdem sind globale Variablen nützlich, im Gegensatz zu einigen OOP-Eiferern, die das Gegenteil behaupten - insbesondere für kleinere Skripte, bei denen OOP ein Overkill ist.