Funktionen

Namen von Funktionen:

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!

Definieren einer Funktion

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.

BEISPIELE:

# 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.

Verwenden von Parametern in Funktionen

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()

Aufrufen einer Funktion

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")

Rückgabewerte aus einer Funktion

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.