At My Fingertips
Bisher haben wir Code verfasst, den wir, einmal geschrieben, nur noch auf mühsame und fehleranfällige Weise wiederverwenden konnten. Die Wiederverwendung von Code ist aber etwas, das Programmierer*innen immer und immer wieder machen. Wir sind eigentlich Profi-Copy-Paster. Und wir als Profi-Copy-Paster haben deshalb auch effizientere Möglichkeiten entwickelt, Code wiederzuverwenden.
Eine Möglichkeit dazu sind Funktionen. Sie kennen Funktionen bereits: show_graphic(rectangle(100, 200, red))
besteht gleich aus zwei Funktionsaufrufen: show_graphic(...)
und rectangle(...)
. Die Funktionsdefinition, also der Code, der beschreibt, was passieren soll, wenn man diese Funktionen aufruft, haben wir noch nicht betrachtet. Wir können aber selbst einmal eine solche Funktionsdefinition verfassen.
In dieser Codezelle (unten) sehen Sie eine Funktionsdefinition, die eine spezielle Ellipse definiert: den Kreis.
Führen Sie diese Codezelle aus.
Wie Sie sehen, passiert noch nichts. Der Compiler hat sich den Code unter dem Namen circle
nur gemerkt, aber noch nicht ausgeführt, da er noch nicht aufgerufen wurde.
Wenn Sie die nächste Codezelle aufrufen, wird der Code in der obigen Zelle mit den Argumenten 200
und rgb_color(0, 127, 255)
aufgerufen und ausgeführt.
Einmal definierten Code wie Funktionen und Variablen wiederverwenden. Auf dieser Website geht das, indem wir Funktionen in die Toolbox speichern (davon später mehr) oder indem wir auf der gleichen Webseite Code (weiter unten) wieder verwenden.
Die Folgende Codezelle definiert eine neue Funktion, die eine Zielscheibe erstellt und dazu auf die Funktion circle(...)
zurückgreift:
Eine Funktion ist eigentlich die Definition der Funktion (Funktionsdefinition):
Eine Definition darf bestehen, ohne je aufgerufen zu werden; der Code kann also kompilieren (durchlaufen werden), ohne dass es zu Fehlermeldungen kommt. Nicht verwendete Funktionen sind jedoch recht sinnlos und gute Programmierumgebungen weisen darauf hin.
Eine Funktion wird verwendet, indem sie vom Aufrufer (Caller) aufgerufen (call) wird, vgl. Bild oben. Wenn jedoch eine Funktion aufgerufen wird, ohne dass sie definiert wurde, gibt der Compiler sofort eine Fehlermeldung aus.
Die Schlüsselwörter lassen den Compiler wissen, dass einerseits eine Funktionsdefinition jetzt beginnt (def), und andererseits, dass sie jetzt endet (return) und den Rückgabewert zurückgibt.
Nach dem Schlüsselwort def folgt immer der Definitionsname, der aus den gleichen Zeichen bestehen darf wie Variablennamen.
In den Klammern darauf kommt irgendeine Anzahl von Parametern. Das Klammerpaar darf also leer sein oder eine unendliche grosse Anzahl Parameter beinhalten. Für uns werden es meist 1-4 Parameter sein.
Am Schluss muss der Doppelpunkt : folgen. Er signalisiert das Ende des Definitionskopfes (erste Zeile). Alles, was zur Definition gehört, ist (um 4 Leerzeichen) eingerückt, auf Englisch indent. Sobald die Einrückung kleiner ist, zählt es nicht mehr dazu (in Python). Eine Funktion darf auch ohne die return-Zeile enden, im Moment arbeiten wir aber nur mit Funktionen, die mit return enden.
Beide Funktionen in der obigen Darstellung sind übrigens gleichwertig, die zweite Version ist einfach kürzer.
Die Funktion kann eingeteilt werden in Kopf und Körper. Wenn die letzte Zeile return enthält, ist diese Zeile die Rückgabeanweisung.
Die Anzahl Parameter in der Definition muss mit der Anzahl Argumente im Aufruf übereinstimmen, sonst kommt es zu Fehlermeldungen. Führen Sie dazu folgende zwei Codezellen aus und verändern Sie die Argumente im Aufruf von f_1
, so dass die Anzahl der Argumente sich von der Anzahl Parameter unterscheidet:
Korrigieren Sie den Code in folgenden zwei Zellen:
Nicht nur die Anzahl der Parameter soll stimmen, sondern auch der Datentyp, sonst kann die Funktion die darin definierten Befehle nicht fehlerfrei ausführen. Korrigieren Sie:
Um dies zu verhindern, wird oft noch der Datentyp im Funktionskopf festgelegt. So weiss man, welche Datentypen erlaubt sind. So können Fehler früher erkannt und mit besseren Fehlerbeschrieben gemeldet werden.
Lesen Sie dazu dazu folgende Codezellen und führen Sie sie anschliessend aus:
Korrigieren Sie den Code in folgender Zelle.
def zielscheibe(breite: float) -> Graphic:
. gesehen:
breite: float
und-> Graphic
.This activity has been created by Gall and is licensed under CC BY-SA 4.0.
Funktionen: Theorie am Kreis
PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI
Privacy Policy • Platform Version b744b47 (Tue, 08 Oct 2024 16:30:14 GMT)