0%

Eigene Funktionen schreiben · Übung

Lokale Variablen und Gültigkeitsbereich

Eine Funktion schafft einen kleinen Arbeitsbereich für ihre Variablen. Eine Variable, der innerhalb einer Funktion ein Wert zugewiesen wird, ist normalerweise lokal für diese Funktion.

Ihr Gültigkeitsbereich ist der Teil des Programms, in dem der Name verfügbar ist.

def make_status(place):
    message = f"Trip to {place}"
    return message

Sowohl place als auch message sind lokale Namen. Sie sind verfügbar, während make_status läuft. Nach dem Ende des Aufrufs kann der zurückgegebene String weiter bestehen, aber diese lokalen Namen stehen dem aufrufenden Code nicht zur Verfügung.

current = make_status("Seoul")
print(current)   # Trip to Seoul
print(message)   # NameError

current erhält den Wert. Es erhält nicht die lokale Variable selbst.

Derselbe Name kann in verschiedenen Gültigkeitsbereichen existieren

Ein sichtbares Ergebnis ist besser als eine Regel zum Auswendiglernen:

Try it

Die Zuweisung innerhalb von make_status erstellt ein lokales status. Sie ersetzt nicht das status auf der obersten Programmebene.

Die Ausgabe zeigt, dass es zwei getrennte Namen gibt:

Inside: Trip to Seoul
Returned: Trip to Seoul
Outside: Not started
Der äußere Gültigkeitsbereich und der Gültigkeitsbereich der Funktion haben jeweils eine eigene Variable status. Die Funktion gibt nur deren Wert an current zurück.

Wenn der Aufruf endet, verschwindet das lokale status. Das status auf der obersten Programmebene ist weiterhin "Not started".

Auch Parameter sind lokal

In dieser Funktion wird place für jeden Aufruf erstellt:

def make_status(place):
    status = f"Trip to {place}"
    return status

Der Aufruf make_status("Seoul") gibt dem lokalen Parameter place den Wert "Seoul". Ein späterer Aufruf mit "Lagos" bekommt seinen eigenen Durchlauf und seine eigenen lokalen Werte.

Diese Trennung ist hilfreich. Eine Funktion kann klare vorübergehende Namen verwenden, ohne den Rest des Programms damit zu füllen.

Informationen hinein übergeben, Informationen zurückgeben

Verwende vorerst dieses verlässliche Muster:

def make_status(place):
    status = f"Trip to {place}"
    return status

current = make_status("Seoul")
  • Parameter übergeben benötigte Informationen an die Funktion.

  • Lokale Variablen speichern Zwischenergebnisse.

  • return gibt ein Ergebnis nach außen zurück.

Python bietet Möglichkeiten, auf Namen außerhalb einer Funktion zuzugreifen und sie zu ändern. Ein Anfängerprogramm ist aber meistens leichter zu verstehen, wenn Informationen ausdrücklich über diese Grenze hinweg übergeben werden.

Welche Zeile gibt dieses Programm zuletzt aus?

label = "OUTSIDE"

def make_label():
    label = "INSIDE"
    return label

result = make_label()
print(result)
print(label)

Aufgabe

Vervollständige make_status(place).

Innerhalb der Funktion:

  1. erstelle eine lokale Variable namens status;

  2. weise ihr den Wert Trip to gefolgt von place zu;

  3. gib diesen lokalen Wert zurück.

Ändere das status auf der obersten Programmebene nicht.

Erwartete Ausgabe:

Trip to Seoul
Not started

Wenn die Übung bestanden ist, verwende Step im Übungseditor. Beobachte, wie das lokale status während des Aufrufs erscheint. Beobachte nach return, wie current_status dessen Wert erhält, während das äußere status unverändert bleibt.