3.8 Funktionen und Methoden
In diesem Abschnitt vermitteln wir Ihnen ein grundlegendes Wissen über Funktionen und einige Konzepte der objektorientierten Programmierung. Dabei beschränken wir uns auf die Aspekte, die in den folgenden Kapiteln benötigt werden. Beide Themen werden in den Kapiteln 19 bzw. 21 noch einmal ausführlich behandelt.
3.8.1 Funktionen
In Python können Teile eines Programms in Funktionen gekapselt und danach über einen Funktionsaufruf ausgeführt werden. Das Ziel dieses Vorgehens ist es, Redundanz im Quellcode zu vermeiden. Funktionalität, die häufig benötigt wird, sollte stets nur einmal als Funktion implementiert und dann als solche im weiteren Programm verwendet werden. Außerdem kann der Einsatz von Funktionen die Les- und Wartbarkeit des Quellcodes verbessern, da zusammengehörige Codeteile zu Einheiten zusammengefasst werden.
Python bietet einen Satz eingebauter Funktionen (Built-in Functions), die der Programmierer zu jeder Zeit verwenden kann. Als Beispiel dient in diesem Abschnitt die eingebaute Funktion max, die das größte Element einer Liste bestimmt:
>>> max([1,5,2,7,9,3])
9
Eine Funktion wird aufgerufen, indem man den Funktionsnamen, gefolgt von den Funktionsparametern in Klammern, schreibt. Im Beispiel erwartet die Funktion max genau einen Parameter, nämlich eine Liste der zu betrachtenden Werte. Das Ergebnis der Berechnung wird als Rückgabewert der Funktion zurückgegeben. Sie können sich vorstellen, dass der Funktionsaufruf im Quelltext durch den Rückgabewert ersetzt wird.
Es gibt eine Variante der Funktion max, die anstelle des größten Elements einer Liste den größten ihr übergebenen Parameter bestimmt. Um einer Funktion mehrere Parameter zu übergeben, werden diese beim Funktionsaufruf durch Kommata getrennt in die Klammern geschrieben:
>>> max(1,5,3)
5
Selbstverständlich können Sie in Python eigene Funktionen definieren, an dieser Stelle genügt es jedoch zu wissen, wie bereits vorhandene Funktionen verwendet werden können. In Kapitel 19 kommen wir noch einmal ausführlich auf Funktionen zu sprechen.
3.8.2 Methoden
Das Erzeugen eines Wertes eines bestimmten Datentyps, etwa das Erzeugen einer ganzen Zahl über ihr Literal, wird Instanziieren genannt und der entstandene Wert Instanz. So ist beispielsweise 2 eine Instanz des Datentyps »ganze Zahl« oder [4,5,6] eine Instanz des Datentyps »Liste«. Der Datentyp einer Instanz legt einerseits fest, welche Daten gespeichert werden, und definiert andererseits einen Satz von Operationen, die auf diesen Daten durchgeführt werden können. Ein Teil dieser Operationen wird durch Operatoren abgebildet; so bietet beispielsweise der Datentyp »Gleitkommazahl« den Operator + zum Addieren zweier Gleitkommazahlen an. Für die einfachen numerischen Datentypen sind einige wenige Operatoren ausreichend, um mit ihnen arbeiten zu können. Bei komplexeren Datentypen, beispielsweise den Listen, ist eine ganze Reihe von Operationen denkbar, die allein über Operatoren nicht abgebildet werden können. Für solche Fälle können Datentypen Methoden definieren. Dabei handelt es sich um Funktionen, die im Kontext einer bestimmten Instanz ausgeführt werden.
Der Datentyp »Liste« bietet zum Beispiel eine Methode sort an, mit deren Hilfe eine Liste sortiert werden kann. Um eine Methode aufzurufen, wird eine Instanz (oder eine Referenz darauf), gefolgt von einem Punkt und dem Methodenaufruf, geschrieben. Dieser ist wie ein Funktionsaufruf aufgebaut:
>>> liste = [2,7,3,2,7,8,4,2,5]
>>> liste.sort()
>>> liste
[2, 2, 2, 3, 4, 5, 7, 7, 8]
Ein weiteres Beispiel bietet die Methode count des Datentyps »String«, die zählt, wie oft ein Zeichen in einem String vorkommt:
>>> "Hallo Welt".count("l")
3
Das hier erworbene Wissen über Funktionen und Methoden wird zu gegebener Zeit vertieft. Im Folgenden wird die für den Anfang wohl wichtigste in Python eingebaute Funktion besprochen: print.