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
# Pseudo-Code
def znacht(x):
x Cordon Bleus
x mal 100g Pasta
znacht(4)
aufräumen()
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
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)
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)
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)
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
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)
Wobei (x,y) die Postion und h die Höhe des Baumes und r den Radius der Krone angibt.
Tanne
Schreibe eine ähnliche Funktion, welche aber einen Tannenbaum zeichnet.
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.
Maus-Steuerung
Schaffst du es den Actor mit der Maus zu steuern? Lies mehr dazu in der offiziellen Pygame Zero-Dokumentation (opens new window).