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.

globaler Namensraum: aListenpreis -> 80.0; aMehrwertsteuersatz -> 19.0; lokaler Namensraum: listenpreis -> 80.0; pMwSt -> 19.0; mehrwertsteuer -> 15.2; endpreis -> 95.2

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.

globaler Namensraum: listenpreis -> 80.0; mehrwertsteuersatz -> 19.0; lokaler Namensraum: listenpreis -> 80.0; pMwSt -> 19.0; mehrwertsteuer -> 15.2; endpreis -> 95.2

Aufgabe 2

Teste selbst, wie die Variablen hier erzeugt und in unterschiedlichen Namensräumen verwaltet werden.

X

Fehler melden

X

Suche