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:
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

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.
returngibt 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:
erstelle eine lokale Variable namens
status;weise ihr den Wert
Trip togefolgt vonplacezu;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.