Python Lambda Funktion einfach erklärt: Syntax & Beispiele
Lambda-Funktionen in Python: Erfahre, wie du anonyme Einzeiler-Funktionen schreibst und wann du sie sinnvoll einsetzt – mit Beispielen.
Von Marcel Schmidtpeter 02. Sept. 2026
Du sitzt im Pair-Programming mit deinem Kollegen, und plötzlich flimmert diese Zeile über den Bildschirm:
personen.sort(key=lambda person: person["alter"])Kein `def`, kein Funktionsname, nur dieses komische `lambda`. Wenn du dich beim ersten Mal gefragt hast, was hier passiert - du bist nicht allein. Genau das klären wir jetzt: die Python Lambda Funktion mit Syntax, Anwendungsfällen und den typischen Stolperfallen.
Was ist eine Python Lambda Funktion?
Eine Lambda-Funktion ist eine kleine, anonyme Funktion (also eine Funktion ohne Namen), die aus genau einem Ausdruck besteht und dessen Ergebnis sofort zurückgibt.
Stell dir vor, du brauchst mal kurz einen Taschenrechner für eine einzige Rechnung - du kaufst deshalb keinen neuen Rechner, du nutzt eben schnell den vom Handy. Genauso ist eine Lambda-Funktion: ein Wegwerf-Werkzeug für eine kleine Aufgabe, die keinen eigenen Namen verdient.
Merke: Lambda-Funktionen sind Einzeiler ohne `def` und ohne `return` - der Ausdruck hinter dem Doppelpunkt ist automatisch der Rückgabewert.
Die offizielle Beschreibung findest du in den Python Docs. Mehr zu anonymen Funktionen allgemein liest du in unserem Beitrag zu Python anonyme Funktionen.
Wie sieht die Syntax einer Lambda-Funktion aus?
Der Aufbau folgt immer demselben Muster: das Schlüsselwort `lambda`, danach die Parameter, ein Doppelpunkt und am Ende ein einzelner Ausdruck.
lambda parameter: ausdruckVergleiche das mit einer normalen Funktion:
# Normale Funktion mit def
def quadriere(x):
return x * x
# Dasselbe als Lambda
quadriere = lambda x: x * x
print(quadriere(5)) # Ausgabe: 25Beide Varianten liefern dasselbe Ergebnis. Der Unterschied: Das Lambda braucht keine Zeile für `def` und `return`, weil alles in einer Zeile passiert.
Wichtig zu wissen: Hinter dem Doppelpunkt steht ein Ausdruck (englisch: *expression*), keine Anweisung (*statement*). Ein Ausdruck liefert einen Wert - `x * x` tut das. Eine Anweisung wie `x = 5` oder `return x` tut das nicht und ist in einem Lambda verboten.
Wann nutzt du Lambda - und wann besser nicht?
Lambda-Funktionen glänzen überall dort, wo eine Funktion nur als Zwischenlösung gebraucht wird, typischerweise als Argument für andere Funktionen wie `sorted()`, `filter()` oder `map()`.
Die Entscheidung zwischen `def` und `lambda` kannst du an dieser Tabelle festmachen:
Kriterium | `def`-Funktion | Lambda-Funktion |
Zeilen | Beliebig viele | Genau eine |
Name | Ja | Nein (anonym) |
`return` | Explizit | Implizit |
Komplexität | Beliebig | Ein einzelner Ausdruck |
Typische Nutzung | Wiederverwendbare Logik | Kurzlebiger Einzeiler |
Faustregel: Wenn du die Logik öfter brauchst oder mehr als einen Blick brauchst, um sie zu verstehen, nimm `def`. Warum? Weil lesbarer Code in Prüfung und Beruf wichtiger ist als kürzester Code.
Merke: Lambda für den schnellen Einzeiler, `def` für alles, was einen Namen und Ruhe verdient.
Wie nutzt du Lambda-Funktionen in der Praxis?
Der wichtigste Anwendungsfall ist das `key`-Argument beim Sortieren - genau der Fall, der dir in Klausuren und im Beruf am häufigsten begegnet. Danach folgen `filter()` und `map()`.
Nehmen wir eine Liste von Personen als Dictionaries (mehr dazu in unserem Artikel zum Python Dictionary):
personen = [
{"name": "Anna", "alter": 24},
{"name": "Ben", "alter": 19},
{"name": "Cem", "alter": 31},
]
# Nach Alter sortieren
nach_alter = sorted(personen, key=lambda p: p["alter"])
for person in nach_alter:
print(person["name"], person["alter"])
# Ausgabe:
# Ben 19
# Anna 24
# Cem 31Was passiert hier? `sorted()` bekommt mit `key` eine Funktion, die für jedes Element einen Sortierwert berechnet. Das Lambda `lambda p: p["alter"]` sagt also: "Nimm für den Vergleich das Feld `alter`." Ohne `key` würde Python versuchen, ganze Dictionaries zu vergleichen - und mit einem `TypeError` abbrechen. Wie das Sortieren intern funktioniert, erklärt die offizielle Sorting-Anleitung.
Zwei weitere Klassiker sind `filter()` und `map()`. Beide arbeiten mit Iterables - Grundlagen dazu findest du in unserem Beitrag zu Iterable und Iterator in Python:
zahlen = [3, 8, 1, 6, 4, 9]
# Nur gerade Zahlen behalten
gerade = list(filter(lambda z: z % 2 == 0, zahlen))
print(gerade) # Ausgabe: [8, 6, 4]
# Jede Zahl verdoppeln
verdoppelt = list(map(lambda z: z * 2, zahlen))
print(verdoppelt) # Ausgabe: [6, 16, 2, 12, 8, 18]Ehrlicher Hinweis: In neuem Code greifen viele Profis heute lieber zu List Comprehensions wie `[z * 2 for z in zahlen]`. In Klausuren, Übungsaufgaben und älterem Code triffst du auf `map()` und `filter()` aber weiterhin ständig - deshalb solltest du beide lesen können.
Ein kleiner Bonus: Bedingte Ausdrücke, also die Kurzform von if/else, funktionieren in Lambdas:
status = lambda zahl: "positiv" if zahl > 0 else "negativ oder null"
print(status(-5)) # Ausgabe: negativ oder nullHäufige Fehler bei Lambda-Funktionen
Fast alle Anfängerfehler mit Lambdas lassen sich auf drei Ursachen zurückführen:
Fehler 1: Anweisungen statt Ausdrücken
Anfänger versuchen oft, mehrere Zeilen Logik in ein Lambda zu quetschen. Das scheitert:
# FALSCH: Zuweisungen sind Statements, keine Expressions
begruessung = lambda name: gruss = "Hallo " + name
print(gruss)
# RICHTIG: Einfach def nutzen
def begruesse(name):
gruss = "Hallo " + name
print(gruss)Sobald du Zuweisungen, `print()`-Aufrufe oder mehrere Schritte brauchst, ist `def` der richtige Weg.
Fehler 2: Lambda an einen Namen binden
Die Zeile `quadriere = lambda x: x * x` aus unserem Beispiel oben? Die funktioniert, aber PEP 8, der offizielle Python-Styleguide (PEP 8), rät davon ab. Wenn eine Funktion einen Namen braucht, soll sie auch wie eine Funktion definiert werden - mit `def`. Lambdas gehören als Argument in andere Funktionen, nicht in Variablen.
Fehler 3: Unlesbare Einzeiler bauen
# Funktioniert, aber niemand will das warten
ergebnis = lambda x: (lambda y: x + y)(x * 2)Geschachtelte Lambdas erzeugen Code, den du eine Woche später selbst nicht mehr verstehst. In einer Präsentation vor deinem Ausbilder oder Professor wirst du dafür kein Lob ernten. Sobald es komplex wird: auspacken und `def` schreiben.
Übungstipp: Sortiere deine eigene Musikbibliothek
Nimm eine Liste mit deinen fünf Lieblingssongs als Dictionaries - mit Titel, Interpret und Länge in Sekunden. Sortiere sie dann in drei Varianten: nach Titel (alphabetisch), nach Länge (aufsteigend) und nach Interpret in umgekehrter Reihenfolge (Stichwort: `reverse=True`).
Wenn du das ohne Nachschauen schaffst, hast du das Muster `sorted(daten, key=lambda x: x["feld"])` verinnerlicht - und genau dieses Muster taucht in Klausuren ständig auf. Extra-Tipp für Prüfungssituationen: Schreib die Syntax einmal handschriftlich auf. Warum das beim Lernen hilft, erklären wir im Artikel Code handschriftlich üben.
FAQ: Häufige Fragen zu Python Lambda-Funktionen
Kann eine Lambda-Funktion mehrere Parameter haben?
Ja. `lambda a, b: a + b` ist völlig legitim - auch mit Default-Werten wie `lambda a, b=2: a * b`. Nur die Anzahl der Ausdrücke ist auf genau einen begrenzt.
Warum heißt die Funktion "Lambda"?
Der Name stammt aus dem Lambda-Kalkül, einem mathematischen Formalismus aus den 1930er Jahren, in dem anonyme Funktionen eine zentrale Rolle spielen. Python hat das Konzept von der funktionalen Programmierung übernommen - C# kennt das Konzept übrigens auch, wie wir im Beitrag zu anonymen Typen und Lambdas in C# zeigen.
Kann ich if/else in einer Lambda-Funktion nutzen?
Ja, aber nur als bedingten Ausdruck (Ternary Operator): `lambda x: "gross" if x > 10 else "klein"`. Ein klassisches `if` mit eingerücktem Block geht nicht, weil Blöcke Anweisungen sind.
Wann sollte ich lieber def verwenden?
Sobald die Logik mehr als einen einfachen Ausdruck umfasst, die Funktion wiederverwendet wird oder einen aussagekräftigen Namen verdient. Das gilt allerdings nicht, wenn du die Funktion nur einmal als `key`-Argument brauchst - dann ist Lambda genau richtig.
Was ist der Unterschied zwischen map(), filter() und Lambda?
`map()` und `filter()` sind Funktionen, die eine Funktion als Argument erwarten - und dieses Argument ist oft ein Lambda. `map()` wandelt jedes Element um, `filter()` wählt Elemente aus. Das Lambda liefert dabei die Logik.
Fazit
Die Python Lambda Funktion ist kein Hexenwerk, sondern ein kompakter Einzeiler für Funktionen, die keinen Namen brauchen. Die Syntax `lambda parameter: ausdruck` beherrschst du jetzt, und du weißt, wo Lambdas wirklich nützlich sind: als `key` beim Sortieren und als Argument für `filter()` und `map()`.
Merke: Ein Lambda besteht aus einem Ausdruck, gibt dessen Ergebnis automatisch zurück und gehört als Argument in andere Funktionen - nicht an eine Variable gebunden.
Wenn du dich auf eine Prüfung vorbereitest oder bei Themen wie funktionaler Programmierung, List Comprehensions oder Comprehensions generell festhängst: Bei study-it.education findest du individuelle Nachhilfe, die genau auf deinen Lernstand eingeht. Wir holen dich dort ab, wo du stehst - auch wenn das gerade bei `lambda x: x` ist.
Brauchst du jemand, der das mit dir durchgeht?
Statt nochmal lesen: 30 min mit einem Senior-Dev.
Kostenloses Erstgespräch buchen →
Lambda-Funktionen in Python: Erfahre, wie du anonyme Einzeiler-Funktionen schreibst und wann du sie sinnvoll einsetzt – mit Beispielen.
marcel.schmidtpeter@study-it.education →Mehr Lesestoff
Python None Optional: None-Werte sicher behandeln – einfach erklärt
None-Werte sicher behandeln: Erfahre, wie Optional und Typannotationen in Python funktionieren und wie du typische None-Fehler vermeidest.
Python List Comprehension map filter: Einfach erklärt mit Beispielen
List Comprehensions, map und filter im Vergleich: So filterst und transformierst du Daten in Python – mit anschaulichen Beispielen für den Einstieg.
Python Typannotationen und Generics einfach erklärt
Typannotationen und Generics in Python erklärt: So nutzt du Type Hints für lesbaren, wartbaren Code – mit Beispielen für Einsteiger.