Du kannst deine Funktionen nennen, wie du willst, aber du darfst keine Leerzeichen im Funktionsnamen verwenden. Anstelle von Leerzeichen verwende Unterstriche ( _ ):
like_this_for_example() .
Für die Verständlichkeit des Programms ist es wichtig, Funktionsnamen sinnvoll zu wählen. Eigentlich sollte ein Funktionsname immer die Aufgabe dieser Funktion beschreiben.
Stelle sicher, dass der gesamte Code innerhalb deiner Funktion um eine Stufe eingerückt ist!
Wir definieren eine Funktion, um Tracy die Anweisungen für das neue Wort beizubringen.
def name_of_your_function():
# Code, der ausgeführt wird, wenn du einen Aufruf an diese Funktion machst.
# Lehre Tracy, eine Kante zu zeichnen
def draw_edge():
forward(50)
left(90)
# Lehre Tracy, eine blaue Kante zu zeichnen
def draw_blue_edge():
color("blue")
forward(50)
left(90)
# Lehre Tracy, ein Quadrat zu zeichnen
def draw_square():
for i in range(4):
draw_edge() #natürlich kann innerhalb einer Funktion eine andere (vorgegebene oder selbst definierte) Funktion aufgerufen werden.
Wir verwenden Parameter (Übergabewerte, ggf. auch Rückgabewerte), um unsere Funktion flexibel zu gestalten.
# Verwende einen Parameter, um die Seitenlänge des zu zeichnenden Quadrats zu steuern
def draw_square(length):
for i in range(4):
forward(length)
left(90)
In einer Funktion können mehrere Parameter verwendet werden. Beim Aufruf einer Funktion muss für jeden Parameter ein Wert übergeben werden, hier z.B. draw_square(40)
# Parameter steuern die Länge der Quadratseiten und die Farbe
def draw_square(length, color_choice):
color(color_choice)
for i in range(4):
forward(length)
left(90)
Hinweis: Hier braucht es zwei Werte beim Funktionsaufruf, also bspw. draw_square(40, "red")
# Parameter steuern die Anzahl Ecken, die Länge der Seiten und die Farbe
def draw_polygon(edges, length, color_choice):
color(color_choice)
for i in range(edges):
forward(length)
left(360/edges)
Am nützlichsten sind Funktionen, wenn sie "sprechende" Namen haben und oft gebraucht werden können:
# An eine Position teleportieren (wie goto(), aber ohne Spur zu zeichnen)
def teleport(x, y):
penup()
goto(x, y)
pendown()
Wir rufen eine Funktion auf, um Tracy tatsächlich den neuen Befehl ausführen zu lassen.
# Rufe die draw_edge() Funktion einmal auf
# Tracy wird eine Kante zeichnen
draw_edge()
# Rufe die draw_edge() Funktion 3 Mal auf
# Tracy wird 3 Kanten zeichnen
draw_edge()
draw_edge()
draw_edge()
# Rufe die draw_square() Funktion mit Parametern auf
# Tracy wird 3 Quadrate mit unterschiedlichen Größen und Farben zeichnen
draw_square(50, "red")
draw_square(100, "blue")
draw_square(75, "orange")
# Rufe die draw_polygon() Funktion mit Parametern innerhalb einer Schleife auf
# Tracy wird mehrere Polygone zeichnen, deren Anzahl Ecken variiert
for e in range(3,9):
draw_polygon(e,100,"blue")
Wir können das Schlüsselwort return verwenden, um einen Wert von einer Funktion zurück an den Code zu geben, von dem sie aufgerufen wurde.
# Aktualisiere den Wert von num und gib ihn zurück
def increase(num):
num += 100
return num
Wir können diesen zurückgegebenen Wert direkt in unseren Befehlen verwenden:
# Zeichne einen Kreis mit einem Radius, der von der Funktion increase zurückgegeben wird
def increase(num):
num += 100
return num
circle(increase(50))
Hinweis: Das Schlüsselwort return gibt den darauf folgenden Wert zurück, ausserdem bricht es die Ausführung der Funktion an dieser Stelle ab. Eine Funktion kann daher nur einen Rückgabewert haben - allerdings kann man mehrere (z.B. Zahlen-) Werte in ein Objekt (bspw. ein Tupel) packen und dieses zurückgeben.