Parameter und Argumente
Unsere bisherigen Funktionen tun bei jedem Aufruf genau dasselbe. Um aber die Fläche eines beliebigen Rechtecks zu berechnen, muss die Funktion seine Breite und Höhe kennen. Solche Werte bekommen Funktionen über Parameter:
def vorstellen(name):
print(f"Ich heiße {name}.")
vorstellen("Anna")
vorstellen("Max")Das gibt aus:
Ich heiße Anna.
Ich heiße Max.In der Definition ist name in den Klammern ein Parameter: eine Variable, die die Funktion in ihrem Rumpf verwenden kann. Du erzeugst sie nicht mit =, das übernehmen die Klammern in der Definition. Im Aufruf ist der Wert in den Klammern, "Anna", ein Argument. Wenn du die Funktion aufrufst, wird das Argument im Parameter gespeichert, und dann läuft der Rumpf. Beim ersten Aufruf ist name gleich "Anna", beim zweiten Aufruf "Max".
Diese beiden Wörter verwechselt man leicht, merke dir also: Ein Parameter ist der Name in der Definition, ein Argument ist der Wert im Aufruf.
Eine Funktion kann mehrere Parameter haben, getrennt durch Kommas. Die Argumente kommen dann der Reihe nach in die Parameter: das erste Argument in den ersten Parameter, das zweite in den zweiten und so weiter:
def vorstellen(name, alter):
print(f"Ich heiße {name} und bin {alter} Jahre alt.")
vorstellen("Anna", 21)
vorstellen(21, "Anna")Das gibt aus:
Ich heiße Anna und bin 21 Jahre alt.
Ich heiße 21 und bin Anna Jahre alt.Im zweiten Aufruf sind die Argumente vertauscht, deshalb kam 21 in name und "Anna" in alter. Python kümmert sich nicht darum, was die Werte bedeuten, sondern nur darum, in welcher Reihenfolge sie stehen.
Jeder Parameter braucht sein Argument. Was passiert, wenn eines fehlt?
def vorstellen(name, alter):
print(f"Ich heiße {name} und bin {alter} Jahre alt.")
vorstellen("Anna")Das Programm endet mit einem Fehler:
Traceback (most recent call last):
File "<exec>", line 4, in <module>
TypeError: vorstellen() missing 1 required positional argument: 'alter'Die Fehlermeldung sagt, dass dem Aufruf ein Argument fehlt, und sie nennt den Parameter, der keines bekommen hat: 'alter'. Positional bedeutet, dass Argumente nach ihrer Position in die Parameter kommen, also der Reihe nach.
Jetzt können wir das Problem vom Anfang der Lektion lösen: eine einzige Funktion, die die Fläche eines beliebigen Rechtecks ausgibt.
So schreibst du es:
Anweisungen
- 1
Erstelle eine Funktion
flaeche_ausgebenmit zwei Parametern,breiteundhoehe. Gib in ihrem Rumpfbreite * hoeheaus. - 2
Rufe sie unter der Funktion mit den Argumenten
5und6auf. Das Programm gibt30aus. - 3
Rufe
flaeche_ausgebennoch zweimal auf, für die beiden anderen Rechtecke vom Anfang der Lektion: mit den Argumenten10und5und dann mit1und5. Das Programm gibt dann30,50und5aus, genau wie der lange Code am Anfang, aber jetzt braucht jedes Rechteck nur eine Zeile.