Funktionen

Funktionen machen es möglich, eine Reihe von Anweisungen mehrfach auszuführen. Damit kann vermieden werden, dass derselbe Code mehrfach geschrieben oder gar mit copy and paste vervielfältigt wird. Dieses Konzept ist nicht nur ein Merkmal von Python, auch in anderen Sprachen sind Funktionen zu finden. Funktionen können auch aus Daten neue Daten berechnen und stellen ein wesentliches Werkzeug für die Strukturierung von Programmen dar.

Eingebaute Funktionen

In den vorherigen Kapiteln sind schon einige Funktionen verwendet worden, die in Python eingebaut sind oder die von Processing für Python zur Verfügung gestellt werden.

# Beispiele für Processing-Funktionen, die mit Python verwendet werden können.

size(200, 300) # Funktion für die Definition der Leinwandgröße
print(x) # Funktion zur Ausgabe von Daten auf der Konsole

Weitere Funktionen sind auf der Referenzseite von Processing einzusehen.

Häufig ist es so, dass die Funktionen einer Programmiersprache zwar eine Reihe von Standardaufgaben abdecken, komplexere Programme aber individuelle Lösungen und damit auch neue, individuelle Funktionen benötigen. Daher ist es auch in Python möglich, eigene Funktionen zu definieren und ihnen das gewünschte Verhalten “einzubauen”.

Eigene Funktionen definieren

Die Definition von Funktionen in Python ist denkbar einfach. Genaugenommen haben wir das bisher schon oft getan:

# Einmalige Ausführung von Grundeinstellungen für das Programm
def setup():
    fullScreen()
    ellipseMode(CENTER)

# Wiederholte Ausführung (Endlosschleife)
def draw():
    ellipse(mouseX, mouseY, 50, 50)

Hierbei handelt es sich um zwei Funktionen, die, wenn sie definiert sind, beim Start eines Programms ausgeführt werden. Alle anderen Funktionen, die wir definieren, müssen ausdrücklich aufgerufen werden.

mousePressed() ist eine weitere Systemfunktion von Processing, mit der sich der Mausklick abfragen lässt:

# Einmalige Ausführung bei Mausklick
def mousePressed():
    fill(random(255))

Mit dem Schlüsselwort def wird die Definition einer Funktion eingeleitet. Zusammen mit dem Namen der Funktion und möglichen Parametern bildet diese erste Zeile die Funktionssignatur.

Eingerückt folgt dann der Code, der beim Aufruf der Funktion ausgeführt werden soll, der Funktionsrumpf. Er kann aus beliebig vielen Zeilen bestehen. Eine goldene Regel lautet:

Wichtig! Eine Funktion kann zwar viele Zeilen Code enthalten. Sie sollte aber genau eine Aufgabe erledigen.

Da es möglich ist, beliebig viele Funktionen zu definieren, wächst deren Anzahl in einem Programm, wenn es komplexer wird. Der Name der Funktion ist frei wählbar, solange er den Regeln des PEP 0008 folgt. Neben den syntaktischen Anforderungen ist eine Sache sicherlich besonders hervorzuheben:

Wichtig! Der Name der Funktion sollte aussagen, was die Aufgabe der Funktion ist. Daher ist zeichne_kreuz() aussagekräftiger als kreuz().

Im folgenden Beispiel wird eine Funktion definiert, die in alle vier Ecken der Leinwand einen Punkt zeichnet.

def zeichne_eckpunkte():
    point(0, 0)
    point(width - 1, 0)
    point(0, height - 1)
    point(width - 1, height - 1 )

Die Ausführung des Programms zeigt kein Ergebnis. Es fehlt noch der Aufruf der Funktion.

zeichne_eckpunkte()

Wichtig! Funktionen in Python werden nur ausgeführt, wenn sie aufgerufen werden.

Lokale und globale Variablen

Damit man Variablen innerhalb von Funktionen ändern kann, die außerhalb definiert wurden, müssen sie mit global für die jeweilige Funktion verfügbar gemacht werden. Andernfalls kommt es zu einer Fehlermeldung:

Mit global funktioniert die Aktualisierung von x:

x = 0

def draw():
    global x
    x = x + 1

Die theoretischen Grundlagen für dieses Vorgehen werden im Kapitel Variablen genauer ausgeführt.

Empfohlene Videos zum Thema

Verstanden
Um die Inhalte auf dieser Website optimal für Sie anbieten zu können, verwenden wir Cookies. Mehr erfahren