Читать книгу Routineaufgaben mit Python automatisieren - Al Sweigart - Страница 96
Die Anweisung global
ОглавлениеWenn Sie innerhalb einer Funktion eine globale Variable bearbeiten wollen, müssen Sie die Anweisung global verwenden. Eine Zeile wie global eggs am Anfang einer Funktion weist Python an: »In dieser Funktion bezieht sich eggs auf die globale Variable, also erstelle keine lokale Variable mit diesem Namen!« Geben Sie als Beispiel den folgenden Code in den Dateieditor ein und speichern Sie ihn als globalStatement.py:
def spam():
global eggs
eggs = 'spam'
eggs = 'global'
spam()
print(eggs)
Wenn Sie dieses Programm ausführen, gibt der letzte Aufruf von print() Folgendes aus:
spam
Die Ausführung dieses Programms können Sie sich auf https://autbor.com/globalstatement/ ansehen. Da eggs am Anfang von spam() als global deklariert ist (), erfolgt die Zuweisung von 'spam' zur globalen Variablen eggs (). Es wird keine lokale Variable namens eggs erstellt.
Es gibt vier Regeln, um lokale und globale Variablen zu unterscheiden:
Wenn eine Variable in einem globalen Gültigkeitsbereich verwendet wird (also außerhalb irgendeiner Funktion), dann handelt es sich um eine globale Variable.
Wird in einer Funktion die Anweisung global für die Variable verwendet, handelt es sich um eine globale Variable.
Wird die Variable in einer Zuweisungsanweisung innerhalb der Funktion verwendet, handelt es sich um eine lokale Variable.
Wird die Variable dagegen nicht in einer Zuweisungsanweisung verwendet, handelt es sich um eine globale Variable.
Um ein besseres Gefühl für diese Regeln zu bekommen, schauen Sie sich das folgende Beispielprogramm an. Geben Sie den folgenden Code in den Dateieditor ein und speichern Sie ihn als sameNameLocalGlobal.py:
def spam():
global eggs
eggs = 'spam' # Globale Variable
def bacon():
eggs = 'bacon' # Lokale Variable
def ham():
print(eggs) # Globale Variable
eggs = 42 # Globale Variable
spam()
print(eggs)
In der Funktion spam() ist eggs die globale Variable dieses Namens, da zu Anfang die Anweisung global steht (). Dagegen ist eggs in bacon() eine lokale Variable, da es in dieser Funktion eine Zuweisungsanweisung für sie gibt (). In ham() ist eggs jedoch wiederum die globale Variable, da es in dieser Funktion zwar keine global-Anweisung, aber auch keine Zuweisungsanweisung gibt. Wenn Sie same NameLocalGlobal.py ausführen, erhalten Sie folgende Ausgabe:
spam
Die Ausführung dieses Programms können Sie sich auf https://autbor.com/sameNameLocalGlobal/ ansehen. Innerhalb einer Funktion ist eine Variable entweder global oder lokal. Es ist nicht möglich, im Code einer Funktion sowohl eine lokale als auch eine globale Variable mit demselben Namen zu verwenden.