110
Wir erzeugen unsere eigenen Funktionen
Kapitel
4
Daran hat sich jetzt mit dem Programm
dreieck07.py
nichts geändert.
Neu ist nur:
0
Als zweite Anweisung wird eine
def
-Anweisung ausgeführt. Damit
lernt Python ein neues Wort. Es lernt,
wie
die Anweisung
dreieck()
auszuführen ist,
ohne sie tatsächlich
an dieser Stelle
auszuführen
.
0
An drei Stellen wird die Funktion
dreieck()
aufgerufen: Um sie aus-
zuführen, »springt« die Programmausführung zu den Anweisungen ganz
am Anfang des Programms, die in der Funktionsdefinition für
dreieck()
stehen, und führt diese der Reihe nach aus. Ein Dreieck
wird gezeichnet. Dann springt sie wieder zurück, genau hinter die Stelle,
an der der Aufruf von
dreieck()
steht, und fährt dort mit der Ausfüh-
rung der weiteren Anweisungen fort.
0
Wichtig!
Ein Punkt ist hier besonders zu beachten: Vor jedem Aufruf
von
dreieck()
muss sichergestellt sein, dass der Name
seite
auf den
gewünschten Wert verweist. Du erreichst das, indem du vor jedem Auf-
ruf von
dreieck()
dem Namen
seite
diesen Wert zuweist.
Im nächsten Kapitel wirst du sehen, dass es dafür eine noch elegantere
Lösung gibt.
Noch ein Schritt weiter …
Mit der Definition von
dreieck()
wird der Funktionsaufruf
dreieck()
zu
einer vollwertigen Python-Anweisung, so wie jeder andere Funktionsaufruf,
z. B.
penup()
oder
forward(50)
auch. Das heißt aber, dass man ihn auch
in anderen Funktionsdefinitionen verwenden darf. Das wollen wir hier noch
probieren. (Wenn es dir zu schwierig wird, überspringe diesen kurzen Ab-
schnitt und kehre vielleicht später nochmals hierher zurück.)
Im Programm
dreieck.py
kommt eine Folge von drei Anweisungen drei
Mal vor, nämlich:
begin_fill()
dreieck()
end_fill()
Diese drei Anweisungen zeichnen ein gefülltes Dreieck. Daraus machen wir
jetzt eine neue Funktion.
>
Schreibe die folgende Funktionsdefinition in das Programm
dreieck_arbeit.py
direkt unter die Funktionsdefinition von
dreieck()
:
111
Noch ein Schritt weiter …
def fuelle_dreieck():
begin_fill()
dreieck()
end_fill()
In dieser neuen Funktion kommt im Funktionskörper
ein Aufruf der von uns selbst definierten Funktion
dreieck()
vor. Kein Problem!
>
Ersetze drei Mal die jeweils drei Zeilen durch
den Funktionsaufruf:
fuelle_dreieck()
Nun sieht das Programm so aus:
>
Speichere eine Kopie von
dreieck_arbeit.py
unter dem Namen
dreieck08.py
ab.
Die Funktionen, die wir bisher definiert haben,
werden ohne Argumente aufgerufen – also ohne
etwas zwischen die runden Klammern zu schreiben
– genauso wie
penup()
. Man sagt: Solche Funktio-
nen haben keine Parameter. Über dieses neue
Fremdwort wirst du bald mehr erfahren.
Zusammenfassend hier nochmals das Muster einer
Funktionsdefinition:
Muster 3: Definition einer Funktion ohne Parameter
def Funktionsname():
"""...Beschreibung...
"""
Anweisung 1
Anweisung 2
...
Funktionskop
f
Doc-String
Funktionskörper
Alle Anweisungen des Funktionskörpers gleich weit eingerückt

Get Python für Kids now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.