Empfehlung zur Verwendung von Funktionen in Python
Größere Programme werden oft unübersichtlich.
Dagegen ist es hilfreich, Programme in viele kleine gut benannten Funktionen zu zerlegen. Es sollte in einem Modul oder einem Programm nur wenige Zeilen geben, die nicht Teil einer Funktion sind.
- Eine Funktion sollte im allgemeinen klein sein und nur eine bestimmte Aufgabe erfüllen. (Dabei kann „klein“ einen Umfang von einer Zeile bis zu 10 Zeilen umfassen. Wenn eine weitere Zerlegung nicht sinnvoll möglich ist, in Ausnahmefällen auch mehr.)
- Der Name der Funktion (und der Parameter) sollte im Idealfall so klar sein, daß er schon beschreibt, was die Funktion macht, ohne daß erst die Dokumentation gelesen werden muß. (Vor der ersten Verwendung einer Funktion sollte allerdings immer die Dokumentation gelesen werden. Falls zunächst kein guter Name gefunden werden kann, kann vorläufig auch ein beliebiger Name als Platzhalter verwendet werden, der später verbessert werden kann, solange die Funktion noch nicht zu viele Nutzer hat.)
- Die Funktionen sollten möglichst wenig auf globale Variablen (Variablen, die außerhalb der Funktion verwendet werden) zugreifen. Statt desen sollten Funktionen alle nötigen Informationen über die Werte ihrer Parameter erhalten und alle Ergebnisse als Wert des Aufrufs zurückgeben.
- Die Dokumentation einer Funktion sollte klar sagen, welchen Wert die Funktion ergibt und welche Änderungen sie bewirkt und wie dieses Verhalten von den Werten der Parameter abhängt. Es muß möglich sein, alles Wichtige über die Funktion zu erfahren, ohne ihren Quelltext lesen zu müssen.
- Falls ein Programm sehr groß wird und sehr viele Funktionen enthält, können diese auf verschiedenen Module verteilt werden. Hierbei ist es wichtig, die Module übersichtlich so zu organisieren, daß ein Modul jeweils Funktionen sammelt, die ein bestimmte Gemeinsamkeit haben, so daß man später leicht weiß, in welchem Modul man eine bestimmte Funktion suchen kann.
Um nicht zu viele Funktionen schreiben zu müssen, hilft es, zu lernen, welche Funktionen alle schon in der Standardbibliothek vordefiniert sind, denn oft findet man für eine bestimmte Aufgabe bereits hilfreiche Funktionen in der Standardbibliothek. Ferner kann man auch auf PyPI nach zu einer Aufgabe passenden Paketen suchen.