Durch das Definieren von Funktionen und dem mehrmaligen Aufruf dieser, vermeidet man, dass Code doppelt geschrieben werden muss.

Analogon

Border

Ein kleiner Schritt, den wir immer wieder machen… z.B. das Handy entsperren – das machen wir zwischendurch immer wieder und ist sozusagen «automatisiert»

Flussdiagramm

Definition der Funktion «znacht» und Aufruf derselben
Definition der Funktion «znacht» und Aufruf derselben

Pseudo-Code

def znacht(x):
   x Cordon Bleus
   x mal 100g Pasta
   
znacht(4)
aufräumen()
1
2
3
4
5
6

Syntax

Definition

Python liefert vordefiniert Funktionen, z.B. print(). Wir können aber auch selber Funktionen definieren. Bevor wir eine Funktion verwenden können, muss diese definiert sein.

Zeile 1
Eine Funktionsdefinition beginnt mit dem Schlüsselwort def (für definition).
Anschliessend folgt ein Name für die Funktion. Der Name kann wie bei den Variablennamen mehr oder weniger frei gewählt werden. Es darf natürlich keine Konflikte mit Schlüsselwörtern, Variablen oder anderen Funktionen geben.
Dann kommen die Argumente in einer runden Klammer
Die Definition wird mit einem Doppelpunkt abgeschlossen
def name(args, kwargs):
    do1
    do2
    ...
    return x
1
2
3
4
5
Zeilen 2-4
Der Inhalt der Funktion
Hier ist beliebiger Code möglich
alles was zur Funktion gehört, muss um eine Ebene (3 Leerzeichen oder 1 Tab) eingerückt werden
Letzte Zeile
Die Funktion wird mit der return-Anweisung abgeschlossen und kann einen Wert zurückgeben

Aufruf

Eine Funktion rufen wir mit ihrem Namen und einer runden Klammer auf. In die runde Klammer kommen die Argumente. Wenn es keine Argumente hat, steht dort eine leere runde Klammer.

z = name(args, kwargs)
1

Der Funktionsaufruf wird wie ein Ausdruck ausgewertet. Das Ergebnis (der Rückgabewert) kann wie bei einem Ausdruck einer Variablen zugewiesen oder direkt in einem Ausdruck weiterverwendet werden.

Hinweis

Python kann Funktionen von Variablen durch die runden Klammern unterscheiden. Geben wir einen Funktionsnamen ohne runde Klammer an, so sprechen wir die Funktion wie eine Variable an, wir führen sie aber nicht aus!

Beispiel

Body Mass Index

Der BMI ist ja einfach eine Formel. Hier bietet es sich besonders an diese in eine eigene Funktion auszulagern. So können wir immer wieder darauf zugreifen und die Formel anwenden. Auch wäre es möglich die Formel in ihrer Definition anzupassen, ohne überall wo sie angewendet wird Änderungen machen zu müssen.

Als Input braucht die BMI-Funktion zwei Parameter: Gewicht in kg und Grösse in m. Mit diesen beiden Werten kann der BMI berechnet werden. Das Ergebnis wird zurückgeliefert. So kann es entweder angezeigt oder weiterverwendet werden.

def bmi(gewicht, groesse):
    return gewicht/(groesse**2)

bmi_paula = bmi(63, 1.67)
print("Paulas BMI:", bmi_paula)

bmi_ruedi = bmi(84, 1.82)
print("Ruedis BMI:", bmi_ruedi)

bmi_diff = abs(bmi_paula - bmi_ruedi)
print("Unterschied:", bmi_diff)
1
2
3
4
5
6
7
8
9
10
11

Das selbe nun mit dem Keyword-Argument bonus. Es hat den Standardwert 1:

def bmi(gewicht, groesse, bonus=1):
    return gewicht/(groesse**2) - bonus

bmi_paula = bmi(63, 1.67, bonus=2)
print("Paulas BMI:", bmi_paula)

bmi_ruedi = bmi(groesse=1.82, gewicht=84)
print("Ruedis BMI:", bmi_ruedi)

bmi_diff = abs(bmi_paula - bmi_ruedi)
print("Unterschied:", bmi_diff)
1
2
3
4
5
6
7
8
9
10
11

Argumente

args

Einer Funktion können Argumente (arguments) übergeben werden. Dadurch kann eine Funktion mit variablen Eingaben eine Klasse von Problemen lösen.

kwargs

Eine Spezialität von Python sind sogenannte keyword arguments. Es handelt sich um benannte Argumente. Der Vorteil: Weil sie benannt sind, können sie in beliebiger Reihenfolge stehen. Zudem können sie einen Default-Wert haben und sind dann optional.

Rückgabewerte

Die Funktion kann mit dem Schlüsselwort return einen sogenannten Rückgabewert zurückgeben. return stellt das Ende der Funktion dar. Der Rückgabewert kann von einem beliebigen Datentyp sein.

Aufgaben

Funktionen definieren: Baum zeichnen

Aufgabe : Baum

schreibe deine Berechnungen des Baumes um, so dass der Baum in einer Funktion gezeichnet wird. Du sollst den Baum also wie folgt zeichnen können:

baum(x, y, h, r)
1

Wobei (x,y) die Postion und h die Höhe des Baumes und r den Radius der Krone angibt.

Aufgabe : Tanne

Schreibe eine ähnliche Funktion, welche aber einen Tannenbaum zeichnet.

Aufgabe : Animation

Füge eine Actor ein – den Alien oder ein eigener – und animiere diesen indem du seine Koordinaten in der update-Funktion veränderst. Mehr zu Actors und Animationen findest du in der Referenz.

Aufgabe : Maus-Steuerung

Schaffst du es den Actor mit der Maus zu steuern? Lies mehr dazu in der offiziellen Pygame Zero-Dokumentation.

Letzte Änderung: 16.10.2019, 08:54:39