Exkurs - lokale und globale Variablen
Getrennte Namensräume
Wir betrachten noch einmal das vereinfachte Programm zur Preisberechnung, bei dem der Benutzer den Listenpreis und den Mehrwertsteuersatz eingibt und bei dem dann der Zahlungsbetrag berechnet und ausgegeben wird.
"""
Programm zur Preisberechnung
Autor: KB
Datum: 12.12.2014
"""
# Unterprogramme
def zahlungsbetrag(listenpreis, pMwSt):
mehrwertsteuer = (listenpreis / 100) * pMwSt
endpreis = listenpreis + mehrwertsteuer
return endpreis
# Hauptprogramm
# Eingabe
aListenpreis = float(input('Listenpreis (in €) : '))
aMehrwertsteuersatz = float(input('Mehrwertsteuer (in %) : '))
# Verarbeitung
aZahlungsbetrag = zahlungsbetrag(aListenpreis, aMehrwertsteuersatz)
# Ausgabe
print('Zahlungsbetrag (in €) :', aZahlungsbetrag)
Wenn man dieses Programm ausführt, erzeugt Python zwei getrennte Namensräume. Ein Namensraum beschreibt dabei eine Menge von Namen zusammen mit den Objekten, die sie verwalten.
In einem lokalen Namensraum für die Funktion zahlungsbetrag
werden die lokalen Variablen verwaltet. Das sind am Ende der Ausführung
des Funktionskörpers die Variablen
listenpreis
, pMwSt
, mehrwertsteuer
und endpreis
.
In einem globalen Namensraum werden die im Hauptprogramm eingeführten Namen
verwaltet. Dazu gehören auch die globalen Variablen.
Im Beispiel sind das beim gewählten Auswertungszeitpunkt (am Ende der Ausführung der Funktion)
die Variablen aListenpreis
und aMehrwertsteuersatz
.
Aufgabe 1
Teste selbst, wie die Variablen erzeugt und in unterschiedlichen Namensräumen verwaltet werden.
Verschiedene Variablen, gleiche Namen
Da globale und lokale Variablen in unterschiedlichen Namensräumen verwaltet werden, kann man sogar gleiche Namen für unterschiedliche Variablen verwenden.
Betrachte als Beispiel den folgenden leicht veränderten Quelltext.
"""
Programm zur Preisberechnung
Autor: KB
Datum: 12.12.2014
"""
# Unterprogramme
def zahlungsbetrag(listenpreis, pMwSt):
mehrwertsteuer = (listenpreis / 100) * pMwSt
endpreis = listenpreis + mehrwertsteuer
return endpreis
# Hauptprogramm
# Eingabe
listenpreis = float(input('Listenpreis (in €) : '))
mehrwertsteuersatz = float(input('Mehrwertsteuer (in %) : '))
# Verarbeitung
aZahlungsbetrag = zahlungsbetrag(listenpreis, kehrwertsteuersatz)
# Ausgabe
print('Zahlungsbetrag (in €) :', aZahlungsbetrag)
Im Quelltext wird der Name listenpreis
als (lokale) Funktionsvariable und auch als
eigenständige globale Variable verwendet.
Die folgende Abbildung (zu einem bestimmten Auswertungszeitpunkt) zeigt, dass es sich hierbei um zwei unterschiedliche Variablen handelt.
Diese können durchaus auch unterschiedliche Werte verwalten.
Aufgabe 2
Teste selbst, wie die Variablen hier erzeugt und in unterschiedlichen Namensräumen verwaltet werden.