Funktionen mit Parametern

Erinnern Sie sich an die Funktion umdrehen()? Nehmen wir an, Sie wollen verhindern, dass Kara schwindelig wird, deswegen soll Kara sich in auch einmal in eine andere Richtung drehen. In unserem Beispiel dreht Kara sich nach links. Wenn sich Kara jetzt rechtsrum drehen soll, könnte man eine neue Funktion definieren. Man könnte aber der Funktion auch einen Variablenwert übergeben, der in der Funktion entsprechende ausgewertet wird. Aus

def umdrehen():
  kara.turnLeft()
  kara.turnLeft()

wird dann:

#dreht Kara um
#Parameter: richtung - Angabe der Drehrichtung ("r" oder "R" für Rechtsdrehung, sonst Linksdrehung) (str)
def umdrehen(richtung):
  if richtung == "r" or richtung == "R":
     kara.turnRight()
     kara.turnRight()
  else:
     kara.turnLeft()
     kara.turnLeft()

Vergleichen Sie beide Quellcodes.

Variablen, die das Verhalten einer Funktion beeinflussen, werden „Parameter“ genannt. In der Funktion umdrehen() ist richtung ein formaler Parameter. Diese werden in der Funktion wie eine Variable benutzt.

Im Hauptprogramm wird eine Funktion mit Parametern aufgerufen, indem der Wert für den Parameter in Klammern gesetzt wird. Der Parameter „l“ ist nach Aufruf der Zeile 51 der aktuelle Parameter für die Funktion. Nach Aufruf der Zeile 53 ist der Parameter „r“ der aktuelle Parameter. D.h., dass der Aufruf von Zeile 51 zu einer Linksdrehung führt, der Aufruf in Zeile 53 jedoch zu einer Rechtsdrehung.

kara.move()
umdrehen("l")
kara.move()
umdrehen("r")

Funktionen mit mehreren Parametern

Hat eine Funktion mehrere Parameter, wird dies in der Funktionsdefinition folgendermaßen angezeigt:

#dreht Kara um 180°
#Parameter: richtung - Angabe der Drehrichtung ("r" oder "R" für Rechtsdrehung, sonst Linksdrehung) (str)
#           anzahl - Anzahl der Drehungen (int)
def umdrehen(richtung, anzahl):
  for i in range(anzahl):
    if richtung == "r" or richtung == "R":
      kara.turnRight()
      kara.turnRight()
    else:
      kara.turnLeft()
      kara.turnLeft()

Beim Aufruf der Funktionen aus dem Hauptprogramm müssen die aktuellen Werte für die Parameter in der richtigen Reihenfolge angegeben werden:

kara.move()
umdrehen("l", 5)
kara.move()
umdrehen("r", 20)

Aktuelle und formale Parameter zusammengefasst

Konventionen

Neben den Konventionen für Funktionen sollten Sie sich Folgendes angewöhnen:

  • Benennung der Parameter: Geben Sie Ihren Parametern sprechende Namen. Allein schon aus dem Namen sollte klar werden, wofür der Parameter steht.
  • Dokumentation: Geben Sie in der Beschreibung auch an, was sich hinter welchem Parameter verbirgt. Auch ist es sinnvoll, den erwarteten Datentyp anzugeben. Das vermeidet Fehler.