Funktionen: Theorie

Motivation

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, Code effizient wieder zu verwenden, sind Funktionen. Sie lernen hier also Funktionsdefinitionen zu verfassen, aufzurufen, anzupassen und zu erklären:

Beispiel

Beispiel einer Funktion mit drei Parametern (Variablen oder Werten in Klammern):

Loading...

Funktionsaufruf

Als Funktion bezeichnet man eigentlich zwei Dinge: Eine Funktionsdefinition und den Funktionsaufruf. Den Funktionsaufruf kennen Sie bereits sehr gut. Folgende Zeile besteht gleich aus zwei Funktionsaufrufen: show_graphic und rectangle:

show_graphic(rectangle(100, 200, red))

Funktionsdefinition

Die Funktionsdefinition ist der Code, der definiert, was passieren soll, wenn man diese Funktionen aufruft. Solche Funktionsdefinitionen verfassen Sie in diesem Curriculum selbst und speichern sie in Ihrer Bibliothek, der Toolbox.

Beispiel: Kreis

Eine (kurze) Funktionsdefinition sieht zum Beispiel so aus:

Loading...

Wenn Sie auf Ausführen/ Run klicken, passiert aber noch nichts sichtbares. Der Compiler hat sich den Code unter dem Namen kreis zwar gemerkt, aber noch nicht ausgeführt. Die Funktionsdefinition kreis muss zuerst noch aufgerufen werden.

Loading...
Lösung
kreis_blaeulich = kreis(200 , rgb_color(0, 127, 255))

Sie können folgende RGB-Werte verwenden: rgb_color(127, 0, 255), rgb_color(127, 100, 255), rgb_color(127, 200, 255)

bild

Loading...
Lösung
from pytamaro import above

kreis_0 = kreis(50, rgb_color(127, 0, 255))
kreis_1 = kreis(100, rgb_color(127, 100, 255))
kreis_2 = kreis(150, rgb_color(127, 200, 255))

bild = above(
    above(kreis_0, kreis_1),
    kreis_2
)

show_graphic(bild)

Wir können also einmal definierten Code über Funktionen (und Variablen) wiederverwenden. Auf dieser Website könne wir auch Funktionsdefinitionen ganz einfach in einer eigenen Bibliothek ablegen und in anderen Aktiväten wieder verwenden. Wir üben in den Aktivitäten dieses Curriculums, Funktionen in der Toolbox abzulegen und wiederzuverwenden.

Dokumentation

Seit kurzem bietet die Website PyTamaro-Web auch automatisch erstellte Dokumentationen für selbst definierte Funktionen an (im Bild unten gelb markiert).

Fachbegriffe

Überblick

Wenn wir von Funktionen sprechen, meinen wir eines von folgenden zwei Konzepten:

  • die Funktionsdefinition und
  • den Funktionktionsaufruf.

eins.png

Eine Funktionsdefinition 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 Funktionsdokumentation beschreibt, wie eine Funktion verwendet werden kann.

Ein Funktionsaufruf (caller) ruft (calls) die Funktionsdefinition auf und übergibt ihr allfällige Argumente wie eine Wert für den Durchmesser (20) oder eine Farbe (black). Wenn jedoch eine Funktion aufgerufen wird, ohne dass sie definiert wurde, gibt der Compiler sofort eine Fehlermeldung aus, z. B. wenn Sie beim Funktionsaufruf einen Schreibfehler gemacht haben:

Loading...
Lösung
show_graphic(kreis(100, black))

Schlüsselwörter

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.

zwei.png

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 danach zur Definition (dem Funktionskörper) gehört, ist (um 4 Leerzeichen) eingerückt, auf Englisch indented.

Eine reine Funktion gibt ihre Veränderungen nur über die Rückgabeanweisung zurück: Die letzte Zeile beginnt mit dem Schlüsselwort return und darauf folgt genau ein Rückgabewert, nie mehr oder weniger. Eine Funktion darf zwar auch ohne die return-Zeile enden, im Moment arbeiten wir aber nur mit Funktionen mit return.

Lösung

Beide Funktionen in der obigen Darstellung sind gleichwertig: Man ruft beide mit kreis(irgendeine_zahl, irgendeine_farbe) auf und erhält bei gleicher Eingabe die gleiche Ausgabe. Sie unterschieden sich nur in ihrem Aufbau, also dass die obere Funktion in einem Zwischenschritt den Rückgabewert der Variable grafik zuweist.

Kopf und Körper

Wie eine Schleife kann auch die Funktion in Kopf (erste Zeile) und Körper (das Eingerückte) eingeteilt werden. Wenn die letzte Zeile mit return beginnt, ist diese Zeile die Rückgabeanweisung und Teil des Körpers.

drei.png

Loading...

Lösung

from pytamaro import beside

def zwei_kreise_0():
    ein_kreis = kreis(23 * 2, red)
    bild = beside(ein_kreis, ein_kreis)
    return bild
Loading...

Erklärung

Beim Aufruf der Funktion zwei_kreise_1 wird zwar jeweils eine Farbe an die Definition übergeben (red, rgb_color etc.), jedoch wird dieser Wert nie verwendet. Stattdessen werden die Kreise immer mit red erstellt. Ersetzen Sie deshalb die Konstante red im Funktionskörper mit dem Parameter farbe, der vom Funktionsaufruf über den Funktionskopf übergeben wird.

Lösung
ein_kreis = kreis(23 * 2, farbe)
Loading...

Hinweis Verwenden Sie im Funktionskörper beide Parameter radius und farbe beim Erstellen der Kreise, damit die Grafik jeweils in passenden Farben und Grössen erstellt wird.

Lösung
from pytamaro import above

def zwei_kreise(radius, farbe):
    ein_kreis = kreis(radius * 2, farbe)
    bild = above(ein_kreis, ein_kreis)
    return bild

Parameter

Die Anzahl Parameter in der Definition muss mit der Anzahl Argumente im Aufruf übereinstimmen, sonst kommt es zu Fehlermeldungen.

Loading...
Lösung
def summe_von_3_zahlen(zahl_0, zahl_1, zahl_2):
    return zahl_0 + zahl_1 + zahl_2 # 3 Summanden

print(summe_von_3_zahlen(2, 3, 4)) # 3 Argumente weil drei Parameter in der Definition
Loading...
Lösung
print(f_1(2, 3))

Type hints

Um solche Fehlaufrufe zu verhindern, wird oft noch der Datentyp im Funktionskopf festgelegt, sogenannte Type hints oder Datentyphinweise. So weiss man, welche Datentypen gemeint sind, und Fehler können früher erkannt werden. Im Gegensatz zu typensicheren Programmiersprachen wie Java und C++ geht die anfängerfreundliche Sprache Python sehr locker mit Datentypen um: Type Hints sind in Python rein informativ/dokumentierend und der Code funktioniert dann (2+2) oder nicht (2+"zwei").

Eine Funktionsdefinition mit type hints sieht folgendermassen aus:

Loading...

Kommentar

# Importiert die pytamaro-Datentypen Graphic und Color sowie die 
# Funktion ellipse aus der Bibliothek pytamaro.
from pytamaro import Graphic, Color, ellipse

# Die Funktion `kreis` nimmt den Parameter durchmesser vom Typ
# float (Kommazahl inkl. Ganzzahl) und den Parameter farbe
# vom Typ Color entgegen, und gibt einen Wert vom Typ Graphic 
# zurück. Color und Graphic sind PyTamaro-Datentypen und müssen 
# dementsprechend aus der Bibliothek pytamaro importiert werden.
def kreis_datentypen(durchmesser: float, farbe: Color) -> Graphic:
    return ellipse(durchmesser, durchmesser, farbe)
Loading...
Loading...
Lösung
kreis_datentypen(100, rgb_color(120, 0, 244))

Was Sie gelernt haben

Allgemein

  • Sie wissen, dass man mit Funktionen gut lesbaren, strukturierten und modularisierten Programmiercode schreiben kann.
  • Sie können bestehende Programme sinnvoll abändern und erweitern.
  • Sie können Fehler in einem Programm identifizieren und korrigieren.

Python

  • Sie können eine Funktion und ihre Einzelteile in eigenen Worten beschreiben.
  • Sie können den Vorteil von Datentypenfixierung in Funktionen in eigenen Worten beschreiben.
  • Sie können Funktionsdefinitionen verfassen und Funktionen aufrufen.

PyTamaro

  • (nichts Neues)

This activity has been created by Gall and is licensed under CC BY-SA 4.0.

Funktionen: Theorie

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version fcb1f6ee (Mon, 09 Mar 2026 15:10:41 GMT)