Читать книгу Routineaufgaben mit Python automatisieren - Al Sweigart - Страница 97
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()
File "C:/sameNameError.py", line 2, in spam
print(eggs) # FEHLER!
UnboundLocalError: local variable 'eggs' referenced before assignment
Die Ausführung dieses Programms können Sie sich auf https://autbor.com/sameNameError/ ansehen. Der Grund für diesen Fehler ist, dass Python die Zuweisungsanweisung für eggs in der Funktion spam() sieht () und daher davon ausgeht, dass eggs eine lokale Variable ist. Allerdings wird print(eggs) ausgeführt, bevor eggs irgendein Wert zugewiesen wurde, also zu einem Zeitpunkt, an dem die lokale Variable eggs noch gar nicht existiert. In einem solchen Fall greift Python nicht auf die globale Variable eggs zurück ().