Der leichte Einstieg Scratch-Kurse
Faszination Coding Programmieren für Kinder
Für Fortgeschrittene Python

Python Funktionen – Tutorial

Veröffentlicht: . Geändert: .
Python Funktionen: Erklärung für Anfänger

In Python Funktionen lassen sich Codestücke unter einem Namen zusammenfassen und von anderer Stelle aus aufrufen. Die Idee ist alt, aber immer noch eines der elementaren Hilfsmittel beim Coden.

Mit Python Funktionen doppelten Code vermeiden

Python Funktionen solltest Du unbedingt kennen, denn sie helfen Dir doppelten Code zu vermeiden. Stell Dir vor, Du hast ein paar geniale Zeilen Code geschrieben: Echter Killer-Code. Nun kommt irgendwann der Punkt, an dem Du diesen Code an anderer Stelle im gleichen Programm noch einmal brauchst. Kein Problem, Du kopierst ihn einfach an die andere Stelle. Eine schlechte Idee, denn wenn Du nun in Deinem Code einen Bug findest (und das kommt bei den besten Programmierern vor), musst Du ihn an zwei Stellen beheben. Wenn Du das Codestück noch öfter kopiert hast, womöglich sogar noch öfter.

Aber es kommt noch schlimmer: Wenn Du den Bug erst nach langer Zeit findest, hast Du vielleicht schon vergessen, dass der gleiche Code noch an einer anderen Stelle steht. Der Bug bleibt dann in Deiner Anwendung und richtet irgendwann wieder Schaden an. Und auch wenn Du es selbst nicht vergisst, dann aber auf jeden Fall der Freund, der Deinen Code später vielleicht betreut und nichts von der anderen Stelle weiß.

Aus diesem Grund ist das Kopieren von Code fast immer eine schlechte Idee. Besser ist es, die betroffenen Zeilen in eine Python Funktion auszulagern. Das hat außerdem den Vorteil, dass Du dem Codestück einen passenden Namen geben kannst und man dadurch sofort erkennt, was es macht. Hilfreiche Tipps zur Vergabe von Namen findest Du auf der Seite der Universität Leipzig.

Definition von Funktionen in Python

Schauen wir uns zu den Python Funktionen ein Beispiel an. Das folgende Programm ermittelt das aktuelle Datum, formatiert es in das in Deutschland übliche Format und gibt es schließlich mit print() aus:

Python Funktionen: Datumsausgabe

Wenn Du den Code jetzt an mehreren Stellen brauchst und deshalb kopierst, bekommst Du ein Problem, falls plötzlich zum Beispiel der Monat ausgeschrieben werden soll (also zum Beispiel Januar statt einer Eins). Du müsstest diese Änderung dann überall vornehmen. Deshalb definierst Du als cleverer Programmierer eine Funktion in Python:

Python Funktionen definieren

Wie Du an dem Beispiel erkennen kannst, ist die Python Syntax für Funktionen nicht besonders kompliziert. Auf das Schlüsselwort def folgt der Name der Funktion, öffnende und schließende runde Klammern und ein Doppelpunkt. Der Funktionskörper, also der eigentliche Inhalt, wird dann eingerückt. Das kennst Du ja vielleicht schon von der Python For Schleife oder von Bedingungen.

Der Aufruf der Funktion erfolgt einfach mithilfe des Funktionsnamens, gefolgt von den beiden Klammern und kann natürlich an vielen Stellen des Programms erfolgen:

Ausgabe des Datums

Dein Code ist also nur einmal vorhanden, Du kannst ihn aber nun von überall aufrufen. Das ist eines der ganz grundlegenden Prinzipien der Programmierung und wird deshalb auch in der Rubrik Python näher besprochen.

Python Funktionen: Parameter und Argumente

Du fragst Dich vielleicht, was es mit diesen beiden Klammern auf sich hat. Oft möchte man Funktionen in Python Werte übergeben. Beim Coding nennt man diese Werte Argumente oder Parameter (je nachdem, ob sie im Aufruf oder in der Definition der Funktion stehen).

In unserem Beispiel könnte es sehr gut sein, dass die Funktion nicht immer das heutige Datum ausgeben soll, sondern eines, das sie vom Aufrufer übergeben bekommt. Diese Werte kommen deshalb in die Klammern. Da im Beispiel oben keine Werte übergeben wurden, waren die Klammern leer. Mit Datumsübergabe sieht die Python Funktion schließlich folgendermaßen aus:

Übergabe des Datums

Die Klammern nehmen nun den Variablennamen datum als Parameter auf. Der Name kann auch anders lauten, denn er wird vom Entwickler vergeben. Dieser Parameter wird dann statt der Zeile date.today() der Variable aktuelles_datum zugewiesen. Der Rest des Codes wird nicht verändert.

Der Aufruf der Funktion mit date.today() als Argument sieht wie folgt aus und führt zum gleichen Ergebnis wie der Code oben:

Date today

Allerdings könnte man nun ja auch ein ganz anderes Datum übergeben, zum Beispiel das Datum der ersten Mondlandung oder Deines Geburtstags:

Parameter formatieren

Egal, welches Datum Du übergibst, es landet jedes Mal im Parameter datum und wird dann formatiert und ausgegeben.

Du kannst einer Funktion in Python auch mehrere Argumente übergeben, diese werden dann sowohl in der Definition als auch im Aufruf durch Kommas getrennt:

Berechnen der Fläche

Mit oder ohne Rückgabe?

Wir haben nun gesehen, dass man Werte in Python Funktionen schreiben kann. Es gibt aber auch den Fall, dass man Werte aus der Funktion wieder ausgeben möchte. In dem Beispiel mit dem Datum oder der Fläche wurde das Ergebnis mit print() ausgegeben.

Das ist aber eher selten der Fall. Meistens sollen Funktionen dieser Art das Ergebnis (das formatierte Datum, die berechnete Fläche) an den Aufrufer zurückgeben. Der entscheidet dann selbst, was er damit machen möchte. Das lässt sich mithilfe eines Rückgabewertes realisieren. Der Wert, der an den Aufrufer zurückgegeben werden soll, wird dabei mithilfe des Schlüsselworts return aus der Funktion geliefert:

Der Wert return

Der Aufrufer kann in seinem Code überall dort, wo er die Funktion aufruft, so tun, als würde er bereits mit dem zurückgelieferten Wert arbeiten. Er kann ihn zum Beispiel ausgeben:

Wert ausgeben

Das Ergebnis der Funktion kann aber auch genauso gut Python Variablen zugewiesen werden:

Ergebnis der Funktion

In dem Beispiel oben gibt es nur eine Zeile mit einem Return. Das ist oft so, aber nicht immer. Es kann auch mehrere Returns geben, beispielsweise als Folge von Bedingungen:

Mehrere returns einrichten

Die Funktion wird in Python übrigens immer an der Stelle des Returns abgebrochen. Sie wird dann verlassen und ist beendet. Der nachfolgende Code, hier die Zeile mit dem print(), wird also nicht mehr ausgeführt.

Woran erkenne ich Funktionscode?

Wir wissen nun, was Funktionen sind und wie man sie definiert und aufruft. Mit ein wenig Übung wirst Du das Konzept zu schätzen wissen. Am Anfang ist es nicht immer leicht zu entscheiden, wann ein Stück Code in eine Python Funktion gehört und wann nicht.

Es gibt aber Zeichen, die darauf hindeuten. In der Softwareentwicklung spricht man auch von Smells, es riecht also nach einer Funktion: Immer, wenn Du ein Stück Code kopierst, solltest Du überlegen, ob nicht eine Funktion besser wäre. Der andere Hinweis ist etwas schwieriger zu erkennen. Oft finden sich im Code zusammengehörige Zeilen, die eine bestimmte Aufgabe erledigen und Python Kommentare enthalten, die diese Aufgabe benennen:

Funktionen erkennen

Wenn Du auf dieses Muster stößt, ist das auch oft ein Hinweis darauf, dass die Zeilen besser in einer Funktion aufgehoben wären. Der Kommentar wird dann als Funktionsname zum echten Codebestandteil. Ausgereifte Entwicklungsumgebungen wie PyCharm erleichtern das Erstellen der Funktion mithilfe von Refactorings. Dabei musst Du nur die betroffenen Zeilen markieren und im Menü das Refactoring-Pattern Extract Method auswählen, die IDE erledigt den Rest.

Python Funktionen: Refactoring
Abb. 1: Das Refactoring erleichtert das Erstellen von Python Funktionen

Wie Du siehst, ist es sinnvoller Python Funktionen zu definieren, als Deinen Code einfach zu kopieren. Solltest Du nämlich doch mal einen Fehler finden, musst Du die Änderung nur an einer Stelle vornehmen. Wenn Du Dir beim Coden noch mehr Arbeit sparen willst, dann finde heraus, wie Du eine Python while Schleife erstellst.

FAQs – Python Funktionen

Was ist eine Funktion in Python?

Python Funktionen werden verwendet, um Code von einer anderen Stelle aus abrufbar zu machen. Zudem fassen sie Codestücke unter einem Namen zusammen. Sie helfen Dir also dabei, Deinen Code besser zu strukturieren.

Wozu dient Return bei Python Funktionen?

Mit Return werden Werte an den Aufrufer zurückgegeben. Deshalb wird Return auch als Rückgabewert bezeichnet.

Was ist eine innere Funktion in Python?

Gelegentlich werden Funktionen in Python verschachtelt. Die innere Funktion wird in diesem Fall erst ausgeführt, wenn die äußere aufgerufen wird.

Nichts mehr verpassen mit unserem Newsletter!

Anderen hat auch das noch gefallen