Eigene Funktionen schreiben · Übung
Parameter und Argumente
Die Funktion in der vorherigen Lektion hat immer dieselbe Nachricht ausgegeben. Mit einem Parameter kann eine Funktion Informationen erhalten und bei verschiedenen Aufrufen unterschiedliche Werte verwenden.
def greet(name):
print(f"Hello, {name}!")
Der Name in den Klammern der Definition ist ein Parameter:
def greet(name):
# ^ parameter
Er ist eine Variable, die beim Aufruf der Funktion einen Wert erhält.
greet("Mina")
# ^ argument
Der Wert im Aufruf ist ein Argument.
Verwende die Begriffe einheitlich:
Ein Parameter ist eine Variable, die in einer Funktionsdefinition benannt wird.
Ein Argument ist ein Wert, der bei einem Funktionsaufruf übergeben wird.
Die Begriffe werden manchmal ungenau verwendet, aber diese Unterscheidung macht es viel leichter zu erklären, was Code tut.
Eine Definition, unterschiedliche Argumente
Jeder Aufruf startet einen neuen Durchlauf des Funktionskörpers. Beim ersten Aufruf enthält name den Wert "Mina". Beim zweiten enthält es "Jon".
Die Funktion braucht keine eigene Version für jede Person. Ihr Parameter beschreibt den Teil, der sich ändern kann.
Mehr als ein Parameter
Trenne Parameter durch Kommas:
def show_score(player, points):
print(f"{player} scored {points} points.")
Aufrufe übergeben für jeden Parameter ein Argument:
show_score("Maya", 8)
show_score("Omar", 11)
Standardmäßig ordnet Python sie nach ihrer Position zu:
| Position | Parameter | Argument des ersten Aufrufs |
|---|---|---|
| erste | player | "Maya" |
| zweite | points | 8 |
Vertauschst du die Argumente, bleibt der Python-Code gültig, aber die Nachricht ergibt keinen Sinn mehr:
show_score(8, "Maya")
# 8 scored Maya points.
Die Funktion kann nur mit der Bedeutung arbeiten, die du jeder Position gibst.
Wähle Parameter, die zur Aufgabe gehören
Ein Parameter sollte eine Information sein, die die Funktion tatsächlich braucht. describe_trip benötigt den Namen einer Person und ein Reiseziel, daher sind zwei Parameter sinnvoll.
Sie braucht nicht jede Variable des Programms. Unpassende Informationen zu übergeben macht eine Funktion schwerer verständlich und erschwert den korrekten Aufruf.
Das ist deine erste kleine Entwurfsentscheidung: Finde heraus, was sich von Aufruf zu Aufruf ändert, und mache diese Information zu einem Parameter.
Welche Aussage zum folgenden Code ist richtig?
def show_price(amount):
print(f"Price: {amount}")
show_price(12)
Aufgabe
Vervollständige describe_trip so, dass die Funktion zwei Parameter verwendet: name und place.
Die Funktion muss einen Satz in genau dieser Form ausgeben:
Maya is heading to Kyoto.
Behalte beide Aufrufe bei. Dieselbe Definition soll Folgendes erzeugen:
Maya is heading to Kyoto.
Omar is heading to Lima.