Routineaufgaben mit Python automatisieren. Al Sweigart
Чтение книги онлайн.

Читать онлайн книгу Routineaufgaben mit Python automatisieren - Al Sweigart страница 43

Название: Routineaufgaben mit Python automatisieren

Автор: Al Sweigart

Издательство: Bookwire

Жанр: Математика

Серия:

isbn: 9783960889571

isbn:

СКАЧАТЬ style="font-size:15px;">      bacon()

      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 image

      eggs = 'spam' image

      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 (image), erfolgt die Zuweisung von 'spam' zur globalen Variablen eggs (image). 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 image

      eggs = 'spam' # Globale Variable

      def bacon():

      eggs = 'bacon' # Lokale Variable image

      def ham():

      print(eggs) # Globale Variable image

      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 (image). Dagegen ist eggs in bacon() eine lokale Variable, da es in dieser Funktion eine Zuweisungsanweisung für sie gibt (image). 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.

       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' image

      eggs = 'global' image

      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()

СКАЧАТЬ