Weiter zum Inhalt

Python-Funktionen: So rufst und schreibst du Funktionen

Lerne, wiederverwendbare und effiziente Python-Funktionen zu schreiben. Beherrsche Parameter, return und fortgeschrittene Themen wie Lambda-Funktionen. Strukturiere deinen Code mit main() und weiteren Best Practices.
Aktualisiert 18. Mai 2026  · 14 Min. lesen
career-building python skills with datacamp banner

Funktionen sind ein zentraler Bestandteil der Programmiersprache Python: Du bist sicher schon auf viele der großartigen Funktionen gestoßen, die in Python eingebaut sind oder über das umfangreiche Bibliotheks-Ökosystem dazukommen. Als Data Scientist wirst du jedoch ständig deine eigenen Funktionen schreiben müssen, um Probleme zu lösen, die dir deine Daten stellen. 

Dieses Tutorial verwendet Syntax für Python 3. Alle Beispiele funktionieren mit Python 3.10+ und wurden an moderne Konventionen angepasst (f-Strings, Type Hints, ausschließlich positions- und ausschließlich schlüsselwortbasierte Parameter). Die aktuelle stabile Version ist Python 3.14.

Damit du den Beispielcode aus diesem Tutorial selbst ausführen kannst, kannst du dir kostenlos ein DataLab-Workbook erstellen. Python ist dort vorinstalliert und alle Codebeispiele sind enthalten. Für noch mehr Übung im Schreiben von Python-Funktionen wirf einen Blick auf dieses interaktive DataCamp-Exercise oder probiere unseren Kurs Python Data Science Toolbox aus!

Funktionen in Python

In der Programmierung nutzt du Funktionen, um Anweisungen zu bündeln, die du mehrfach brauchst oder die aufgrund ihrer Komplexität besser gekapselt in einem Unterprogramm liegen und bei Bedarf aufgerufen werden. Eine Funktion ist also ein Stück Code, das eine bestimmte Aufgabe ausführt. Dafür kann sie Eingaben benötigen oder nicht. Nach Ausführung kann sie einen oder mehrere Werte zurückgeben – oder eben nichts.

Es gibt drei Arten von Funktionen in Python:

  • Built-in-Funktionen wie help() für Hilfe, min() für den Minimalwert, print() für die Ausgabe im Terminal … Eine Übersicht mit weiteren Funktionen findest du hier.

  • User-Defined Functions (UDFs), also selbst erstellte Funktionen; und

  • Anonyme Funktionen, auch Lambda-Funktionen genannt, da sie nicht mit dem üblichen Schlüsselwort def deklariert werden.

Funktionen vs. Methoden

Eine Methode ist eine Funktion, die Teil einer Klasse ist. Du rufst sie über eine Instanz bzw. ein Objekt dieser Klasse auf. Eine Funktion hat diese Einschränkung nicht: Sie steht für sich allein. Das bedeutet: Alle Methoden sind Funktionen, aber nicht alle Funktionen sind Methoden.

Sieh dir dieses Beispiel an: Zuerst definierst du eine Funktion plus() und dann eine Klasse Summation mit einer Methode sum():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGEgZnVuY3Rpb24gYHBsdXMoKWBcbmRlZiBwbHVzKGEsYik6XG4gIHJldHVybiBhICsgYlxuICBcbiMgQ3JlYXRlIGEgYFN1bW1hdGlvbmAgY2xhc3NcbmNsYXNzIFN1bW1hdGlvbihvYmplY3QpOlxuICBkZWYgc3VtKHNlbGYsIGEsIGIpOlxuICAgIHNlbGYuY29udGVudHMgPSBhICsgYlxuICAgIHJldHVybiBzZWxmLmNvbnRlbnRzICJ9

Wenn du nun die Methode sum() der Klasse Summation aufrufen willst, musst du zuerst eine Instanz bzw. ein Objekt dieser Klasse anlegen. Definieren wir also ein solches Objekt:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIHBsdXMoYSxiKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuY2xhc3MgU3VtbWF0aW9uKG9iamVjdCk6XG4gIGRlZiBzdW0oc2VsZiwgYSwgYik6XG4gICAgc2VsZi5jb250ZW50cyA9IGEgKyBiXG4gICAgcmV0dXJuIHNlbGYuY29udGVudHMgIiwic2FtcGxlIjoiIyBJbnN0YW50aWF0ZSBgU3VtbWF0aW9uYCBjbGFzcyB0byBjYWxsIGBzdW0oKWBcbnN1bUluc3RhbmNlID0gU3VtbWF0aW9uKClcbnN1bUluc3RhbmNlLnN1bSgxLDIpIn0=

Denk daran: Für den Aufruf der Funktion plus() ist diese Instanziierung nicht nötig! Du kannst im DataCamp-Light-Codeblock problemlos plus(1,2) ausführen!

Parameter vs. Argumente

Parameter sind die Namen in der Funktions- oder Methodendefinition, denen beim Aufruf Argumente zugeordnet werden. Kurz: Argumente sind die übergebenen Werte; im Funktions- bzw. Methodencode verweist du über die Parameternamen auf diese Argumente.

Sieh dir das folgende Beispiel an und vergleiche mit dem DataCamp-Light-Block oben: Du übergibst zwei Argumente an die Methode sum() der Klasse Summation, obwohl du zuvor drei Parameter definiert hast: self, a und b.

Was ist mit self passiert?

Das erste Argument jeder Klassenmethode ist immer eine Referenz auf die aktuelle Instanz der Klasse, hier also Summation. Konventionell heißt dieses Argument self.

Das bedeutet: Du übergibst self nicht explizit, da self der Parametername für ein implizit übergebenes Argument ist, das auf die Instanz verweist, über die die Methode aufgerufen wird. Es wird automatisch in die Argumentliste eingefügt.

So definierst du eine Funktion: User-Defined Functions (UDFs)

Die vier Schritte zum Definieren einer Funktion in Python sind:

  1. Verwende das Schlüsselwort def und gib anschließend den Funktionsnamen an.

  2. Füge Parameter hinzu: Sie stehen in runden Klammern hinter dem Funktionsnamen. Beende die Zeile mit einem Doppelpunkt.

  3. Füge die Anweisungen hinzu, die die Funktion ausführen soll.

  4. Beende die Funktion mit einem return, wenn sie etwas zurückgeben soll. Ohne return gibt die Funktion das Objekt None zurück.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4gIn0=

Natürlich werden deine Funktionen mit der Zeit komplexer: Du kannst for-Schleifen, Kontrollfluss … und mehr hinzufügen, um sie feiner zu steuern:

def hello():
    name = input("Enter your name: ")
    if name:
        print(f"Hello {name}")
    else:
        print("Hello World")

hello()

In der obigen Funktion bittest du die Nutzenden um einen Namen. Wenn kein Name eingegeben wird, gibt die Funktion „Hello World“ aus. Andernfalls erhält die Person eine personalisierte „Hello“-Antwort.

Merke: Du kannst deiner UDF einen oder mehrere Parameter geben. Mehr dazu erfährst du im Abschnitt zu Funktionsargumenten. Außerdem kannst du als Ergebnis deiner Funktion einen oder mehrere Werte zurückgeben – oder auch nicht.

Python von Grund auf lernen

Beherrsche Python für Data Science und erwerbe gefragte Fähigkeiten.
Kostenloses Lernen beginnen

Die return-Anweisung

Wenn deine UDF hello() etwas ausgibt, musst du es nicht zwingend zurückgeben. Es gibt keinen Unterschied zwischen der obigen Funktion und dieser Variante:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsb19ub3JldHVybigpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpICJ9

Wenn du jedoch mit dem Ergebnis weiterarbeiten und Operationen darauf anwenden willst, musst du mit return tatsächlich einen Wert zurückgeben, etwa einen String, eine Ganzzahl …. Betrachte folgendes Szenario: hello() gibt den String "hello" zurück, während hello_noreturn() None zurückgibt:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4oXCJoZWxsb1wiKVxuXG5kZWYgaGVsbG9fbm9yZXR1cm4oKTpcbiAgcHJpbnQoXCJIZWxsbyBXb3JsZFwiKVxuICBcbiMgTXVsdGlwbHkgdGhlIG91dHB1dCBvZiBgaGVsbG8oKWAgd2l0aCAyIFxuaGVsbG8oKSAqIDJcblxuIyAoVHJ5IHRvKSBtdWx0aXBseSB0aGUgb3V0cHV0IG9mIGBoZWxsb19ub3JldHVybigpYCB3aXRoIDIgXG5oZWxsb19ub3JldHVybigpICogMiJ9

Die zweite Funktion führt zu einem Fehler, weil du mit None keine Operationen ausführen kannst. Du erhältst einen TypeError, der besagt, dass die Multiplikation für NoneType (das None aus hello_noreturn()) und int (2) nicht möglich ist.

Tipp: Funktionen beenden ihre Ausführung sofort, wenn sie auf ein return treffen – auch wenn dadurch kein Wert zurückgegeben wird:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBydW4oKTpcbiAgZm9yIHggaW4gcmFuZ2UoMTApOlxuICAgICBpZiB4ID09IDI6XG4gICAgICAgcmV0dXJuXG4gIHByaW50KFwiUnVuIVwiKVxuICBcbnJ1bigpIn0=

Außerdem kannst du mit return mehrere Werte zurückgeben – mithilfe von Tupeln.

Merke: Tupel ähneln Listen, können also mehrere Werte enthalten. Sie sind jedoch unveränderlich, du kannst ihre enthaltenen Werte nicht verändern. Du erstellst sie mit runden Klammern (). Mit Komma und Zuweisungsoperator kannst du Tupel in mehrere Variablen entpacken.

Sieh dir dieses Beispiel an, um zu verstehen, wie deine Funktion mehrere Werte zurückgeben kann:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgXG5kZWYgcGx1cyhhLGIpOlxuICBzdW0gPSBhICsgYlxuICByZXR1cm4gKHN1bSwgYSlcblxuIyBDYWxsIGBwbHVzKClgIGFuZCB1bnBhY2sgdmFyaWFibGVzIFxuc3VtLCBhID0gcGx1cygzLDQpXG5cbiMgUHJpbnQgYHN1bSgpYFxucHJpbnQoc3VtKSJ9

Hinweis: Die Anweisung return sum, a führt zum selben Ergebnis wie return (sum, a). Erstere packt sum und a unter der Haube automatisch in ein Tupel!

So rufst du eine Funktion auf

In den vorherigen Abschnitten hast du bereits viele Beispiele gesehen, wie du eine Funktion aufrufst. Einen Funktionsaufruf auszuführen bedeutet, die zuvor definierte Funktion zu starten – entweder direkt in der Python-Konsole oder aus einer anderen Funktion heraus (siehe Abschnitt „Verschachtelte Funktionen“).

Rufe deine neu definierte Funktion hello() einfach mit hello() auf, so wie im folgenden DataCamp-Light-Block:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiJoZWxsbygpIn0=

Docstrings zu einer Python-Funktion hinzufügen

Ein weiterer wichtiger Aspekt beim Schreiben von Funktionen in Python: Docstrings. Sie beschreiben, was deine Funktion tut – zum Beispiel, welche Berechnungen sie ausführt oder welche Werte sie zurückgibt. Diese Beschreibungen dienen als Dokumentation, damit andere ohne Blick in den gesamten Code verstehen, was deine Funktion macht.

Funktions-Docstrings stehen direkt in der Zeile nach dem Funktionskopf und werden in drei Anführungszeichen eingeschlossen. Ein passender Docstring für deine Funktion hello() lautet: „Prints \"Hello World\"“.

def hello() -> None:
    """Prints "Hello World"."""
    print("Hello World")

Hinweis: Docstrings können deutlich ausführlicher sein als im Beispiel. Wenn du tiefer einsteigen willst, sieh dir die Repositories von Python-Bibliotheken auf Github an, etwa scikit-learn oder pandas. Dort findest du viele gute Beispiele!

Type Hints

Eng verwandt mit Docstrings — und in modernem Python fast ebenso verbreitet — sind Type Hints. Seit Python 3.5 kannst du die erwarteten Typen für Parameter und Rückgabewert annotieren. Hier ist das einfachste Beispiel:

def plus(a: int, b: int) -> int:
    return a + b

Das : int hinter jedem Parameter bedeutet „sollte eine ganze Zahl sein“, und das -> int nach der Klammer bedeutet „diese Funktion gibt eine ganze Zahl zurück“. Python erzwingt diese Annotationen zur Laufzeit nicht — du kannst weiterhin einen String an plus() übergeben, und Python beschwert sich erst, wenn etwas schiefgeht. Aber Tools wie mypy, pyright sowie die integrierten Type Checker in Editoren wie VS Code und PyCharm nutzen diese Hinweise, um Bugs zu finden, bevor du deinen Code überhaupt ausführst.

Für komplexere Typen kannst du eingebaute Generics direkt verwenden (Python 3.9+) oder aus dem Modul typing importieren:

def greet(names: list[str]) -> None:
    for name in names:
        print(f"Hello {name}")

def find_user(user_id: int) -> dict | None:
    # returns the user dict, or None if not found
    ...
Type Hints sind optional, gelten aber als Best Practice für alle Funktionen, die du wiederverwenden, teilen oder in sechs Monaten erneut anfassen willst. Sie sind maschinenprüfbare Dokumentation — deine IDE autovervollständigt darauf basierend, findet Tippfehler und warnt dich, wenn du den falschen Typ übergibst.

Funktionsargumente in Python

Vorhin hast du den Unterschied zwischen Parametern und Argumenten kennengelernt. Kurz: Argumente sind die übergebenen Werte; im Funktions- oder Methodencode verweist du über Parameternamen auf sie. Python-UDFs können vier Arten von Argumenten annehmen:

  • Standardargumente
  • Erforderliche Argumente
  • Schlüsselwortargumente
  • Variable Anzahl an Argumenten

Standardargumente

Standardargumente erhalten einen Vorgabewert, wenn beim Aufruf kein Wert übergeben wird. Du weist diesen Default-Wert mit dem Zuweisungsoperator = zu, wie im folgenden Beispiel:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIgPSAyKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuIyBDYWxsIGBwbHVzKClgIHdpdGggb25seSBgYWAgcGFyYW1ldGVyXG5wbHVzKGE9MSlcblxuIyBDYWxsIGBwbHVzKClgIHdpdGggYGFgIGFuZCBgYmAgcGFyYW1ldGVyc1xucGx1cyhhPTEsIGI9MykifQ==

Erforderliche Argumente

Wie der Name vermuten lässt, müssen erforderliche Argumente übergeben werden. Diese Argumente müssen beim Aufruf vorhanden sein und in der richtigen Reihenfolge – wie hier gezeigt:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGIifQ==

Du brauchst Argumente, die auf die Parameter a und b abgebildet werden, sonst gibt es einen Fehler. Wenn du a und b vertauschst, ändert sich das Ergebnis hier nicht – wohl aber, wenn du plus() so abänderst:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYS9iIn0=

Schlüsselwortargumente

Wenn du sicherstellen willst, dass die Parameter korrekt zugeordnet werden, nutze Schlüsselwortargumente im Funktionsaufruf. Dabei identifizierst du die Argumente über ihre Parameternamen. Das obige Beispiel macht es deutlicher:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBwYXJhbWV0ZXJzIFxucGx1cygyLDMpXG5cbiMgQ2FsbCBgcGx1cygpYCBmdW5jdGlvbiB3aXRoIGtleXdvcmQgYXJndW1lbnRzXG5wbHVzKGE9MSwgYj0yKSJ9

Mit Schlüsselwortargumenten kannst du auch die Reihenfolge vertauschen und erhältst dennoch dasselbe Ergebnis:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBrZXl3b3JkIGFyZ3VtZW50c1xucGx1cyhiPTIsIGE9MSkifQ==

Variable Anzahl an Argumenten

Wenn du die genaue Anzahl der zu übergebenden Argumente nicht kennst, kannst du die folgende Syntax mit *args verwenden:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcbmRlZiBwbHVzKCphcmdzKTpcbiAgcmV0dXJuIHN1bShhcmdzKVxuXG4jIENhbGN1bGF0ZSB0aGUgc3VtXG5wbHVzKDEsNCw1KSJ9

Der Stern (*) steht vor dem Variablennamen, der alle nicht-schlüsselwortbasierten Argumente sammelt. Du könntest hier ebenso *varint, *var_int_args oder jeden anderen Namen mit Stern an plus() übergeben.

Tipp: Ersetze *args testweise durch einen anderen Namen mit Stern. Der Code funktioniert weiterhin!

Die obige Funktion nutzt die eingebaute Python-Funktion sum(), um alle übergebenen Argumente in plus() zu addieren. 

Globale vs. lokale Variablen

Variablen, die im Funktionskörper definiert werden, haben in der Regel lokalen Geltungsbereich; außerhalb definierte sind global. Das heißt: Lokale Variablen sind nur innerhalb der Funktion zugreifbar, globale können von allen Funktionen im Skript verwendet werden:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgR2xvYmFsIHZhcmlhYmxlIGBpbml0YFxuaW5pdCA9IDFcblxuIyBEZWZpbmUgYHBsdXMoKWAgZnVuY3Rpb24gdG8gYWNjZXB0IGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50c1xuZGVmIHBsdXMoKmFyZ3MpOlxuICAjIExvY2FsIHZhcmlhYmxlIGBzdW0oKWBcbiAgdG90YWwgPSAwXG4gIGZvciBpIGluIGFyZ3M6XG4gICAgdG90YWwgKz0gaVxuICByZXR1cm4gdG90YWxcbiAgXG4jIEFjY2VzcyB0aGUgZ2xvYmFsIHZhcmlhYmxlXG5wcmludChcInRoaXMgaXMgdGhlIGluaXRpYWxpemVkIHZhbHVlIFwiICsgc3RyKGluaXQpKVxuXG4jIChUcnkgdG8pIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVcbnByaW50KFwidGhpcyBpcyB0aGUgc3VtIFwiICsgc3RyKHRvdGFsKSkifQ==

Du wirst eine NameError-Meldung erhalten, dass name 'total' is not defined, wenn du die lokale Variable total ausgeben willst, die innerhalb des Funktionskörpers definiert wurde. Die Variable init hingegen kann problemlos ausgegeben werden.

Nur positions- und nur schlüsselwortbasierte Parameter

Seit Python 3.8 kannst du mit zwei speziellen Markierungen in der Funktionssignatur (/ und *) stärker steuern, wie Argumente übergeben werden: Alles vor / darf nur positionell übergeben werden; alles nach * nur per Schlüsselwort.

def greet(name, /, greeting="Hello", *, punctuation="!"):
    print(f"{greeting} {name}{punctuation}")

 So wirkt sich das beim Aufruf aus:

greet("Alice")                          # works
greet("Alice", greeting="Hi")           # works
greet("Alice", "Hi", punctuation="?")   # works

greet(name="Alice")                     # TypeError: name is positional-only
greet("Alice", "Hi", "?")               # TypeError: punctuation is keyword-only

Warum ist das nützlich? Zwei Hauptgründe.

Erstens erlauben nur positionsbasierte Parameter, sie später umzubenennen, ohne fremden Code zu brechen — da niemand den Parameternamen als Schlüsselwort verwenden darf.

Zweitens erzwingen nur schlüsselwortbasierte Parameter explizite Aufrufe, was bei mehreren optionalen Flags oder Einstellungen die Lesbarkeit erhöht.

Kurz: Eine saubere Möglichkeit, Intentionen durchzusetzen.

Anonyme Funktionen in Python

Anonyme Funktionen heißen in Python Lambda-Funktionen, weil sie nicht mit dem Standard-Schlüsselwort def deklariert werden, sondern mit lambda.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRvdWJsZSA9IGxhbWJkYSB4OiB4KjJcblxuZG91YmxlKDUpIn0=

Im obigen DataCamp-Light-Block ist lambda x: x*2 die anonyme bzw. Lambda-Funktion. x ist das Argument und x*2 der Ausdruck, der ausgewertet und zurückgegeben wird. Besonderheit: Die Funktion hat keinen Namen, anders als die Beispiele im ersten Teil dieses Tutorials. Als UDF sähe sie so aus:

def double(x):
  return x*2

Noch ein Beispiel für eine Lambda-Funktion mit zwei Argumenten:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgYHN1bSgpYCBsYW1iZGEgZnVuY3Rpb25cbnN1bSA9IGxhbWJkYSB4LCB5OiB4ICsgeTtcblxuIyBDYWxsIHRoZSBgc3VtKClgIGFub255bW91cyBmdW5jdGlvblxuc3VtKDQsNSlcblxuIyBcIlRyYW5zbGF0ZVwiIHRvIGEgVURGXG5kZWYgc3VtKHgsIHkpOlxuICByZXR1cm4geCt5In0=

Anonyme Funktionen nutzt du, wenn du zur Laufzeit kurzzeitig eine namenlose Funktion brauchst. Typische Einsatzfälle sind filter(), map() und reduce():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2VcblxubXlfbGlzdCA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMF1cblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYGZpbHRlcigpYFxuZmlsdGVyZWRfbGlzdCA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiAoeCoyID4gMTApLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYG1hcCgpYFxubWFwcGVkX2xpc3QgPSBsaXN0KG1hcChsYW1iZGEgeDogeCoyLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYHJlZHVjZSgpYFxucmVkdWNlZF9saXN0ID0gcmVkdWNlKGxhbWJkYSB4LCB5OiB4K3ksIG15X2xpc3QpXG5cbnByaW50KGZpbHRlcmVkX2xpc3QpXG5wcmludChtYXBwZWRfbGlzdClcbnByaW50KHJlZHVjZWRfbGlzdCkifQ==

filter() filtert – wie der Name sagt – die Eingabeliste my_list anhand des Kriteriums >10. Mit map() wendest du eine Funktion auf alle Elemente von my_list an. Hier werden alle Elemente mit 2 multipliziert.

Beachte: reduce() ist Teil der Bibliothek functools. Es wendet die Funktion kumulativ von links nach rechts auf die Elemente von my_list an und reduziert die Sequenz in diesem Fall auf den einzelnen Wert 55.

main() als Funktion in Python verwenden

Wenn du Erfahrung mit anderen Sprachen wie Java hast, weißt du: Eine main-Funktion ist dort Pflicht. In Python ist das nicht notwendig, wie du gesehen hast. Dennoch kann eine main()-Funktion helfen, deinen Code logisch zu strukturieren – die wichtigsten Bestandteile stehen dann in dieser Funktion.

Du kannst eine main()-Funktion definieren und sie wie jede andere Funktion aufrufen:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG5cbm1haW4oKSJ9

So wie es jetzt ist, wird der Code deiner main()-Funktion allerdings auch beim Import als Modul ausgeführt. Damit das nicht passiert, rufst du main() nur auf, wenn __name__ == '__main__' ist.

Der obige Codeblock wird dann zu:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG4gIFxuIyBFeGVjdXRlIGBtYWluKClgIGZ1bmN0aW9uIFxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKCkifQ==

Hinweis: Neben __main__ gibt es auch __init__, das eine Instanz einer Klasse initialisiert. Einfach gesagt: Es fungiert als Konstruktor/Initializer und wird automatisch aufgerufen, wenn du eine neue Instanz erstellst. Das neu erzeugte Objekt wird dabei dem Parameter self zugewiesen, den du bereits gesehen hast. Beispiel:

class Dog:
    """A simple Dog class.

    Args:
        legs: Number of legs so that the dog can walk.
        color: The color of the fur.
    """

    def __init__(self, legs: int, color: str) -> None:
        self.legs = legs
        self.color = color

    def bark(self) -> str:
        return "bark" * 2

if __name__ == "__main__":
    dog = Dog(4, "brown")
    print(dog.bark())

Übe weiter mit Python-Funktionen

Glückwunsch! Du hast dieses kurze Tutorial zu Funktionen in Python abgeschlossen. Wenn du weitere Python-Grundlagen auffrischen möchtest, sieh dir Data Types for Data Science an. In diesem Kurs festigst du dein Wissen über Listen, Dictionaries, Tupel, Sets und Datums-/Zeitangaben.

Lass dich für deine Traumrolle als Data Scientist zertifizieren

Unsere Zertifizierungsprogramme helfen dir, dich von anderen abzuheben und potenziellen Arbeitgebern zu beweisen, dass deine Fähigkeiten für den Job geeignet sind.

Hol dir deine Zertifizierung
Timeline mobile.png

Häufig gestellte Fragen zu Python-Funktionen

Was ist eine Funktion in Python?

Eine Funktion ist ein wiederverwendbarer Codeblock für eine bestimmte Aufgabe. Sie kann Eingaben annehmen, verarbeiten und Ausgaben zurückgeben.

Wie definiert man eine Funktion in Python?

Definiere eine Funktion mit dem Schlüsselwort def, gib ihr einen Namen, füge optional Parameter in Klammern hinzu, schreibe den Code und gib bei Bedarf mit return einen Wert zurück.

Was ist der Unterschied zwischen Funktionen und Methoden in Python?

Funktionen stehen für sich, Methoden gehören zu Klassen. Alle Methoden sind Funktionen, aber nicht alle Funktionen sind Methoden.

Welche Arten von Funktionen gibt es in Python?

Python hat eingebaute Funktionen (z. B. print()), benutzerdefinierte Funktionen (deine eigenen) und anonyme Funktionen (kurzlebige lambda-Funktionen).

Was ist der Unterschied zwischen Parametern und Argumenten?

Parameter sind Platzhalter in der Funktionsdefinition, Argumente sind die tatsächlichen Werte beim Aufruf.

Was ist eine Lambda-Funktion?

Eine Lambda-Funktion ist eine einzeilige, namenlose Funktion für schnelle Aufgaben.

Warum verwendet man die __main__-Funktion?

Die Funktion __main__ strukturiert deinen Code und stellt sicher, dass bestimmte Teile nur laufen, wenn das Skript direkt ausgeführt wird – nicht beim Import.

Was ist der Unterschied zwischen globalen und lokalen Variablen?

Globale Variablen gelten überall, lokale nur innerhalb ihrer Funktion.

Themen

Erfahre mehr über Python

Kurs

Einführung in Python

4 Std.
6.8M
Lerne in nur vier Stunden die Grundlagen der Datenanalyse mit Python und entdecke beliebte Python-Pakete.
Details anzeigenRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Tutorial

Python-Lambda-Funktionen: Ein Leitfaden für Anfänger

Lerne mehr über Python-Lambda-Funktionen, wozu sie gut sind und wann man sie benutzt. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Mark Pedigo's photo

Mark Pedigo

Tutorial

Python-Listenfunktionen und -Methoden – Tutorial und Beispiele

Lerne die Funktionen und Methoden von Python-Listen kennen. Schau dir jetzt die Code-Beispiele für list() und andere Python-Funktionen und -Methoden an!
Abid Ali Awan's photo

Abid Ali Awan

Image

Tutorial

Fibonacci-Folge in Python: Lerne und entdecke Programmiertechniken

Finde raus, wie die Fibonacci-Folge funktioniert. Schau dir die mathematischen Eigenschaften und die Anwendungen in der echten Welt an.
Laiba Siddiqui's photo

Laiba Siddiqui

Tutorial

Python range()-Funktion Tutorial

Lerne anhand von Beispielen die Python-Funktion range() und ihre Möglichkeiten kennen.
Aditya Sharma's photo

Aditya Sharma

Tutorial

Python-Cache: Zwei einfache Methoden

Lerne, wie du Dekoratoren wie @functools.lru_cache oder @functools.cache benutzt, um Funktionen in Python zwischenzuspeichern.
Stephen Gruppetta's photo

Stephen Gruppetta

Tutorial

30 coole Python-Tricks für besseren Code mit Beispielen

Wir haben 30 coole Python-Tricks zusammengestellt, mit denen du deinen Code verbessern und deine Python-Kenntnisse ausbauen kannst.
Kurtis Pykes 's photo

Kurtis Pykes

Mehr anzeigenMehr anzeigen