(7) Funktionen

Wiederkehrende Aufgaben gibt es im Alltag genug – z.B. Wäsche waschen, den Kaffeeautomaten bedienen oder Reifen wechseln. Solche wiederkehrenden Aufgaben kann man auch in Programmen finden. Sie lassen sich gut als Funktionen zusammenfassen, die immer wieder aufgerufen werden können. Auch komplexe, abgeschlossene Aufgaben werden häufig vom Hauptprogramm getrennt und in einer eigenen Funktion zusammengefasst.

Challenge

Schreibe eine Funktion, die die Länge des täglichen Arbeitsweges als Parameter entgegennimmt und als Ergebnis zurückliefert, wie viele km man im Jahr pendelt. Rechne mit 230 Arbeitstagen.

Gut zu wissen…

Python stellt eine Menge von Funktionen, die so genannten built-in Funktionen, zur Verfügung. Dazu gehört beispielsweise die Funktion print(). Eine Liste von solchen Funktionen findet man in der —Python Dokumentation.

Ein Programmierer kann aber auch selbst Funktionen erstellen, die so genannten user-defined Funktionen. Das Schlüsselwort def leitet eine solche Funktion ein, gefolgt von dem Funktionsnamen, einer Klammer und einem Doppelpunkt. In der Klammer können, müssen aber keine Parameter aufgeführt werden. Der Funktionssname lässt sich beliebig wählen. Es ist allerdings hilfreich, den Namen so zu wählen, dass sich der Zweck der Funktion im Namen wiederspiegelt.

Direkt in der ersten Zeile des Funktionsrumpf kann mit Hilfe von “”” ein Kommentar definiert werden. Dieser fungiert als spezielles Attribut (__doc__) für die Funktion und dient Dokumentationszwecken.

Parameter werden in den Klammern nach dem Funktionsnamen mit angeben. Wird eine Funktion mit Parametern aufgerufen, so werden die geforderten Paramenter als Argumente (Werte) beim Aufruf mit übergeben. Es ist auch möglich, für Parameter Standardwerte zu definieren (nach dem Parameternamen folgt ein Gleichheitszeichen und der Wert). Beim Funktionsaufruf im Hauptprogramm kann für den Parameter ein eigener Wert übergeben werden, oder dieser wird weggelassen und der Default Wert wird verwendet.

Sollte die Anzahl der Argumente, die übergeben werden sollen, nicht klar sein, kann der Operator * verwendet werden. Mit diesem können für einen Parameter eine beliebige Anzahl an Argumenten übergeben werden. Hört sich im ersten Augenblick praktisch an – man sollte aber auf Lesbarkeit und Fehleranfälligkeit des Codes achten.

Eine Funktion kann einen oder mehrere Werte mit Hilfe von return zurückliefern. Diese können dann im aufrufenden Programmteil weiter verwendet werden. Im Beispiel unten wird die Summe aus zwei Parametern berechnet und als Integer zurückgegeben. Eine Funktion ohne spezifischen Rückgabewert liefert None zurück. Als Rückgabewerte kommen Objekte wie Integer, String oder Floats, aber auch Listen, Tupel oder selbst definierte Objekte in Frage.

Gültigkeitsbereich von Variablen in Funktionen

Jede Variable, die innerhalb einer Funktion definiert wird, ist auch nur innerhalb dieser Funktion bekannt. Außerhalb der Funktion, z.B. im Hauptprogramm oder in anderen Funktionen, kann nicht auf die Werte dieser Variable zugegriffen werden. Der Gültigkeitsbereich der Variablen liegt also innerhalb der Funktion. Möchte man mit den Ergebnissen einer Funktion in anderen Programmteilen weiterarbeiten, dann muss die Variable als Rückgabewert (return Variable) übergeben werden.

Für den Spickzettel…

Schreibe einen Kommentar

Menü schließen