Quellcode besser organisieren Funktionen und Methoden in Python
17.03.2021
Autor / Redakteur: Thomas Joos / Stephan Augsten
Mit Funktionen lassen sich in Python Teilbereiche eines Programms zusammenfassen. Dies dient dazu, den Code besser zu strukturieren und spart dem Entwickler redundante Arbeit.
Firmen zum Thema
Wenn in einem Programm bestimmte Funktionalitäten regelmäßig an verschiedenen Stellen benötigt werden ist es sinnvoll, diese in einer Funktion zusammenzufassen. Immer wenn die Funktionalität benötigt wird, reicht es aus, im Programm die jeweilige Funktion aufzurufen.
Gleichzeitig wird auch der Programmcode wesentlich übersichtlicher, da zusammengehöriger Code im Programm zusammengefasst wird. Mit dieser steigenden Übersicht sinken auch die Fehlerquellen, da eine fehlerfreie Funktion an allen Stellen im Code fehlerfrei ist und jederzeit aufgerufen wird.
Setzen Entwickler die Aufgaben stattdessen an jedem Codebereich ohne Funktion um, steigt die Anzahl der möglichen Fehlerquellen, gleichzeitig sinkt die Übersicht. Bei Funktionen handelt es sich also einfach ausgedrückt um Unterprogramme eines Programms. Neben der Möglichkeit eigene Funktionen zu erstellen, sind auch in Python Funktionen integriert, die bei Aufgaben helfen. Die integrierten Funktionen werden auch als „Built-in Functions“ bezeichnet.
Funktionen aufrufen
Die Built-in-Functions und die selbst erstellten Funktionen, werden aufgerufen, indem im Code der Name der Funktion und dann in Klammern die dazugehörigen Parameter aufgerufen werden. Dabei handelt es sich um einen Funktionsaufruf. Ein Beispiel ist die Verwendung der Funktion print.
Mit print(„Hallo“) wird in der Konsole auch „Hallo“ ausgegeben. Um sich eine Hilfe zu print anzuzeigen, kann in diesem Beispiel mit help(print) gearbeitet werden. Der Befehl help funktioniert auch mit anderen Funktionen, wie zum Beispiel mit help(max). Die Funktion max zeigt aus einer Liste von Werten den höchsten Wert an:
zahl = max([1,4,10])print(zahl)
Bei der Liste am Beispiel von dem oberen Beispiel mit max handelt es sich um einen Parameter der Funktion. Wenn eine Funktion in ein Ergebnis resultiert, so wie am oberen Beispiel der Wert „10“ für die Variable „zahl“, kann der Wert als Instanz im Programm
Eigene Funktionen mit „def“ erstellen
Wenn eigene Funktionen erstellt werden, müsse diese den Maßgaben entsprechen, die auch für Built-In-Fuctions gelten. Eine Funktion muss einen Namen erhalten, über den sie mit einem Funktionsaufruf aus dem Code heraus gestartet werden kann. Dann muss festgelegt werden wie Daten vom Programmcode in die Funktion übertragen werden können.
Abschließend gilt es zu definieren, welchen Wert die Funktion zurückgibt. Wenn kein Wert festgelegt ist, wie zum Beispiel über max der höchste Wert in einer Liste, dann gibt die Funktion als Ergebnis „none“ zurück.
Eigene Funktionen lassen sich mit dem Schlüsselwort def erstellen. Folgendermaßen lässt sich zum Beispiel eine einfache Funktion definieren, die den Text „Das ist ein Text aus einer Funktion“ ausgibt:
def meinefunktion(): print(„Das ist ein Text aus einer Funktion“)
print(„Programm-Ende“)
Um die Vorgehensweise zu testen, wird parallel festgelegt, dass der Text „Programmende“ ausgegeben wird. Wird das Programm gestartet, erscheint in diesem Beispiel als Ergebnis nur der String „Programm-Ende“. Das liegt daran, dass die Funktion nur definiert wurde und das Programm mit dem eigentlichen Code fortfährt.
Im Umkehrschluss bedeutet das, dass die Funktion nur dann ausgeführt wird und den Text anzeigt, wenn explizit ein Funktionsaufruf erfolgt:
def meinefunktion(): print(„Das ist ein Text aus einer Funktion“)meinefunktion()print(„Programm-Ende“)
In diesem Beispiel vor print(„Programm-Ende“) rufen wir über „meinefunktion()“ die vorher erstellte Funktion auf. Da die Funktion nichts anderes macht, als den Text „Das ist ein Text aus einer Funktion“, erscheinen in diesem Fall die beiden Textzeilen:
Das ist ein Text aus einer FunktionProgramm-Ende
Eigene Funktionen im Code aufrufen
Der Vorteil von Funktionen ist die Möglichkeit, diese an jeder Stelle im Code aufrufen zu können und ihren Programmcode zu nutzen, ohne alles erneut eintippen zu müssen. In diesem Beispiel wird die Funktion mehrfach an verschiedenen Stellen aufgerufen und gibt immer ihr definiertes Ergebnis aus:
def meinefunktion(): print(„Das ist ein Text aus einer Funktion“)meinefunktion()meinefunktion()meinefunktion()print(„Programm-Ende“)meinefunktion()
Ein wichtiger Sinn von Funktionen besteht darin, Werte aus dem Programmcode zu erhalten, diesen zu verarbeiten und anschließend wieder an das Programm weiterzureichen. Im folgenden Beispiel wird der Wert „10“ an die Funktion „halbierung“ übergeben. Die Funktion halbiert den übergebenen Wert und gibt ihn aus:
def halbierung(wert1): print("Halbierung") print(wert1/2)halbierung(10)print(„Programm-Ende“)
Durch das Aufrufen der Funktion „halbierung“ und der Übergabe des Wertes „10“, verarbeitet die Funktion den übergebenen Wert als „wert“, führt die Berechnung durch und gibt das Ergebnis aus. Danach fährt das Programm fort und meldet das „Programm-Ende“. Funktionen lassen sich auch verschachteln. Es ist möglich, in Funktionen ebenfalls wieder eine oder auch mehrere Funktionen aufzurufen.
Methoden nutzen
Bei Methoden handelt es sich um Funktionen, die abhängig von bestimmten Datentypen und Instanzen angewendet werden können. Mit dem Datentyp „Liste“ kann zum Beispiel die Methode „sort“ verwendet werden, mit der eine Liste sortiert werden kann. Eine Methode bezieht sich dabei auf eine Instanz.
Wenn in diesem Beispiel zum Beispiel eine Liste (bzw. ein eindimensionales Array) von Zahlen als Variable gespeichert wird mit zahlen = [1,5,3,2,10,7,6] und diese Liste mit zahlen.sort() sortieren lassen, ist die Instanz dieser Aktion eine sortierte Reihenfolge in der Form [1,2,3,5,6,5,10]. Die Instanz kann im Code weiterverwendet werden. Welche Methoden zur Verfügung stehen, hängt von dem verwendeten Datentyp ab.
Methoden funktionieren generell wie Funktionen und können Variablen als Objekt behandeln. Im folgenden Beispiel wird ein Text einer Variablen gespeichert (text) anschließend wird eine neue Variable (textneu) definiert und mit der Methode lower wird die Variable „textneu“ als Kleinbuchstaben umgewandelt und anschließend mit der Funktion print ausgegeben:
text = "Das iST eIn BeISpIEL"textneu = text.lower()print(textneu)
Die Ausgabe würde dementsprechend lauten:
das ist ein beispiel
Methoden bieten also eine objektorientierte Sichtweise auf Instanzen, Variablen und anderen Bereichen in der Programmierung. Das gute an einer solchen Vorgehensweise ist, dass der ursprüngliche Wert einer Variablen nicht geändert wird. Sowohl der manipulierte als auch der ursprüngliche Wert lassen sich über die print-Funktion ausgeben:
text = "Das iST eIn BeISpIEL"print(text.lower())print(text)
(ID:47135449)