Python Lambdas sind sogenannte anonyme Funktionen mit denen man schnell Funktionen definieren kann, die mehrere Inputs haben können, aber nur einen Output. Solche anonymen Funktionen werden nicht nur in Python, sondern auch in anderen Programmiersprachen, wie Java, C# oder C++ verwendet.
Wie werden normale Funktionen in Python definiert?
In Python wird die Definition einer Funktion mit „def“ gekennzeichnet. Anschließend wird ihr Name definiert und in runden Klammern die Argumente mit Namen aufgelistet. Die folgende Funktion mit dem Namen „sum“ nimmt einfach zwei Argumente und addiert diese zusammen:

Der Vorteil an diesen Funktionen ist, dass sie über einen eindeutigen Namen aufgerufen werden können. Dieser hilft sowohl die Funktionalität besser zu umschreiben, als auch zu einem späteren Zeitpunkt wieder auf die Funktion zu referenzieren. Zusätzlich können auch die Argumente Namen haben, die helfen, das Resultat besser zu verstehen. Ein weiterer Vorteil ist, dass explizit definierte Funktionen auch mehr als ein Argument ausgeben können.
Unsere anfängliche Funktion beispielsweise kann neben der Summe auch zusätzlich noch die Differenz der beiden Argumente ausgeben:

Was sind anonyme Funktionen?
Es gibt jedoch auch eine zweite Art, wie Funktionen in Python definiert werden können. Mithilfe von sogenannten anonymen Funktionen können diese mit wenigen Zeilen, meist sogar nur einer einzigen, definiert werden. Diese anonymen Funktionen gibt es auch in anderen Programmiersprachen, wie Java oder C#. In Python nutzt man dafür das Argument „lambda“, weshalb anonyme Funktionen in Python auch oft lediglich Python Lambdas genannt werden.
Diese Funktionen lassen sich ganz einfach mit dem Parameter „lambda“, der Nennung der Variablen und dem Ausdruck, den die Funktion berechnen soll definieren:

An diesem Beispiel erkennt man auch deutlich, warum Python Lambdas anonyme Funktionen sind: Der Funktion selbst kann man nämlich keinen Namen geben, man kann sie lediglich in einer Variablen („function“) abspeichern.
Wenn wir also die Summenfunktion aus unserem anfänglichen Beispiel mithilfe von Python Lambdas nachbauen wollen, sieht das folgendermaßen aus:

Wie man sieht, können auch mehr als ein Argument an Python Lambdas weitergegeben werden. Die Funktion „sum_difference“ können wir jedoch nicht mit Python Lambdas nachbauen, da die anonymen Funktionen immer nur ein Resultat ausgeben können. Stattdessen müssen also zwei unterschiedliche Funktionen definiert werden und auch doppelt gerufen werden:

Warum sollte man Python Lambdas nutzen?
Es gibt verschiedene Fälle in denen es sinnvoll sein kann, Python Lambdas zu nutzen:
- Wenn simple Funktionen definiert werden, die lediglich einen Output haben und eine geringe Zahl an Inputs. In großen Projekten kann es sinnvoll sein, eine solche Funktion nicht explizit zu definieren, um Platz zu sparen und nicht unnötig für Verwirrung zu sorgen. Des weiteren erspart man sich in umfangreichen Klassen Probleme bei der Vererbung etc.
- Dasselbe Argument zieht auch dann, wenn Funktionen nur ein einziges Mal zum Einsatz kommen. Dann kann man auch auf die explizite Definition verzichten, da sowieso niemand mehr auf die Funktion zugreifen muss.
- Zusätzlich können anonyme Funktionen dafür sorgen, dass der Inhalt der Funktion schneller und einfacher verständlich wird, da es in einer einzige Zeile definiert ist. Die explizite Definition von Funktionen kann dazu führen, dass eine gewisse Verständlichkeit verloren geht.
- Darüber hinaus gibt es in Python Funktionen, wie beispielsweise „filter“ oder „map“, die Funktionen als Input nehmen. In diesen Fällen ist es also sinnvoll, Python Lambda zu nutzen.
Wie funktioniert die Funktion filter() mit Python Lambdas?
Die Funktion „filter()“ kann genutzt werden, um eine Liste mit einer gewissen Bedingung zu filtern. Das Resultat ist eine neue Liste, die lediglich noch aus denen Elementen besteht, welche die Bedingung erfüllen. Ohne die explizite Funktion könnte man das auch wie folgt lösen:

Die Funktion „filter()“ hat insgesamt zwei Inputs, zum einen die Liste, welche gefiltert werden soll, und zum anderen die Bedingung, die für die Filterung genutzt werden soll. Diese Filterbedingung muss dabei eine Funktion sein, weshalb sich Python Lambdas dafür anbietet:

Für solche Anwendungen sind Python Lambdas natürlich auch eine optimale Alternative.
Das solltest Du mitnehmen
- Anonyme Funktionen werden genutzt, um schnell Funktionen definieren zu können, die keinen Namen tragen müssen.
- Das kann sinnvoll sein, wenn Funktionen lediglich ein einziges Mal verwendet werden sollen oder man den Namespace von Variablen und Funktionen klein halten will.
- In Python nutzt man anonyme Funktionen mit dem Parameter „lambda“, weshalb anonyme Funktionen in Python auch Python Lambdas genannt werden.
Vielen Dank an Deepnote für das Sponsoring dieses Artikels! Deepnote bietet mir die Möglichkeit, Python-Code einfach und schnell auf dieser Website einzubetten und auch die zugehörigen Notebooks in der Cloud zu hosten.
Andere Beiträge zum Thema Python Lambdas
- w3schools bietet noch mehr konkrete Beispiele zum Einsatz von Python Lambdas