Название: Routineaufgaben mit Python automatisieren
Автор: Al Sweigart
Издательство: Bookwire
Жанр: Математика
isbn: 9783960889571
isbn:
print(eggs) # Gibt 'global' aus
Wenn Sie dieses Programm ausführen, erhalten Sie folgende Ausgabe:
bacon local
spam local
bacon local
global
Die Ausführung dieses Programms können Sie sich auf https://autbor.com/localglobalsamename/ ansehen. Tatsächlich enthält dieses Programm drei verschiedene Variablen, die alle den Namen eggs tragen, was nicht gerade übersichtlich ist. Es handelt sich dabei um folgende Variablen:
1 Die Variable eggs im lokalen Gültigkeitsbereich des Aufrufs von spam() ()
2 Die Variable eggs im lokalen Gültigkeitsbereich des Aufrufs von bacon() ()
3 Die Variable eggs im globalen Gültigkeitsbereich ()
Da diese drei Variablen alle denselben Namen haben, kann es ziemlich kompliziert werden, nachzuvollziehen, welche zu einem bestimmten Zeitpunkt gerade verwendet wird. Daher sollten Sie es vermeiden, Variablen in unterschiedlichen Gültigkeitsbereichen denselben Namen zu geben.
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 (
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 (
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.
Hinweis
Wenn Sie den Wert einer globalen Variablen in einer Funktion ändern wollen, so müssen Sie für diese Variable die Anweisung global verwenden.
Wenn Sie wie in dem folgenden Programm versuchen, eine lokale Variable in einer Funktion zu verwenden, bevor Sie ihr einen Wert zuweisen, gibt Python eine Fehlermeldung aus. Um sich das anzusehen, geben Sie den folgenden Code in den Dateieditor ein und speichern ihn als sameNameError.py:
def spam():
print(eggs) # FEHLER!
eggs = 'spam local'
eggs = 'global'
spam()
Wenn Sie dieses Programm ausführen, erhalten Sie folgende Fehlermeldung:
Traceback (most recent call last):
File "C:/sameNameError.py", line 6, in <module>
spam()
СКАЧАТЬ