Python #9: Funktionen

Funktionen sind ein wesentlicher Bestandteil der Objektorientierten Programmierung (dazu folgt später ein separater Beitrag) und dienen unter anderem dazu den Quellcode zu strukturieren.

Nehmen wir folgenden Quellcode:

In diesem Stück Code wird die Addition zweier Zahlen (a & b) ausgeführt.
Da ich hier jedoch mehrmals Addieren möchte muss der Quellcode immer wiederholt werden. Diese Dopplung  von Code ist nicht sehr schön und macht den gesamten Quellcode schnell unübersichtlich und unnötig lang. Und genau hier können wir eine Funktion nutzen um diesen Code zu vereinfachen.

Wie erzeugt man eine Funktion?

Eine Funktion erzeugt man mit dem Schlüsselwort „def“. Nach dem Schlüsselwort folgt ein Name für die Funktion und zusätzlich die runden Klammern gefolgt von einem Doppelpunkt. 

Als Funktionsname kann man eine beliebige Zeichenkette wählen, jedoch darf diese nicht mit einer Zahl beginnen. Macht man dieses trotzdem erhält man vom Interpreter folgende Fehlermeldung:

Der Name einer Funktion sollte im Idealfall immer das Repräsentieren was die Funktion macht, d.h. wenn in dieser Funktion eine Addition zweier oder mehrerer Zahlen durchgeführt wird so sollte diese dann mit „addition“ benannt werden.  Des Weiteren sollte eine Funktion genau eine Aufgabe übernehmen und wenn mehr zutun ist kann man dieses ja in andere Funktionen auslagern. Auch solle eine Funktion nicht zu lang werden, als Richtwert nimmt man immer eine Bildschirmhöhe.

Als erstes schreiben wir eine Funktion welche uns mit dem Befehl „print“ mehrere Ausgaben auf der Konsole erzeugt.

Aufrufen einer Funktion

In den Beiträgen zuvor haben wir bereits Funktionen genutzt, zbsp. print, str, len usw. Unsere neue Funktion „ausgabe“ rufen wir nun wiefolgt auf:

Mit den Klammern „sagen“ wir dem Interpreter das wir die Funktion „ausgabe“ aufrufen möchten (andernfalls würde dieses als Variable erkannt).

Wir erhalten also folgende Ausgabe:

Wichtig ist, das die definition der Funktion VOR dem aufrufen der Funktion steht, ansonsten erhält man folgende Fehlermeldung:

Dies bedeutet das der Interpreter den Namen der Funktion „addition“ zu dem Zeitpunkt wo die Zeile ausgeführt wird nicht kennt. Dieses liegt daran das die definition ja erst zum Schluss erfolgt.

definieren von Funktionsparameter

Einer Funktion kann in den runden Klammern zusätzlich Funktionsparameter übergeben werden.

Hier habe ich nun die Funktion angepasst nun ist diese noch vielseitiger zu verwenden da die Funktion „ausgabe“ nun mit mehreren Texten bedient werden kann. 

Möchte man mehr als einen Funktionsparameter verwenden so kann man diese mit einem Komma getrennt erstellen.

Nun können wir unsere Additionsaufgaben vom Anfang erneut anschauen und wissen nun wie wir dieses verbessern können:

optionale Funktionsparameter

Nachdem wir nun eine Funktion mit einem oder mehreren Funktionsparametern definiert haben, wollen wir diese nun Vorbelegen. Dieses sind dann die optionalen Funktionsparameter. Es ist bei der Verwendung von optionalen Funktionsparametern wichtig das diese NACH den nicht optionalen Funktionsparametern folgen.

Macht man dieses nicht so erhält man die Fehlermeldung:

Möchte man also den Funktionsparameter „a“ Vorbelegen so muss man diese beiden Funktionsparameter tauschen.

Das ergibt an der Funktion „addition“ jedoch wenig sinn.

Wenn wir zbsp. die Mathematische Funktion des quadrieren (zbsp. 9²) nutzen wollen:

Als Ausgabe erhalten wir den Wert „81“. Jedoch können wir als Exponenten auch einen anderen Wert als „2“ wählen oder aber wir definieren wenn kein exponent angegeben wird, dann wird immer der Wert „2“ gesetzt.

definieren unendlicher Funktionsparameter

Man kann auch unendlich viele Funktionsparameter definieren, dazu erzeugt man einen einfachen Parameter und setzt vor diesem ein Stern (*). Dieser Parameter wird dann auch Tupel-Referenz genannt und repräsentiert eine Liste.

Wenn wir nun die Funktion wiefolgt aufrufen würden:

Dann haben wir den Funktionsparameter „a“ mit „Dies“ belegt sowie „b“ mit „ist“, die restlichen übergebenen Werte werden in einer Liste zusammen gefasst und können mit dem Index abgerufen werden.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.