19.5 Anonyme Funktionen 

Beim Sortieren einer Liste mit der Built-in Function sorted kann eine Funktion übergeben werden, die die Ordnungsrelation der Elemente beschreibt. Auf diese Weise lassen sich die Elemente nach selbst definierten Kriterien sortieren:
>>> def s(x):
... return -x
...
>>> sorted([1,4,7,3,5], key=s)
[7, 5, 4, 3, 1]
In diesem Fall wurde die Funktion s definiert, die einen übergebenen Wert negiert, um damit die Liste in absteigender Reihenfolge zu sortieren. Funktionen wie s, die in einem solchen oder ähnlichen Kontext verwendet werden, sind in der Regel sehr einfach und werden definiert, verwendet und dann vergessen.
Mithilfe des Schlüsselwortes lambda kann stattdessen eine kleine anonyme Funktion erstellt werden:
>>> s = lambda x: -x
Auf das Schlüsselwort lambda folgen eine Parameterliste und ein Doppelpunkt. Hinter dem Doppelpunkt muss ein beliebiger arithmetischer oder logischer Ausdruck stehen, dessen Ergebnis von der anonymen Funktion zurückgegeben wird. Beachten Sie, dass die Beschränkung auf einen arithmetischen Ausdruck zwar die Verwendung von Kontrollstrukturen ausschließt, nicht aber die Verwendung einer Conditional Expression.
Eine lambda-Form ergibt ein Funktionsobjekt und kann wie gewohnt aufgerufen werden: s(10). Der Rückgabewert wäre in diesem Fall -10. Wie der Name schon andeutet, werden anonyme Funktionen jedoch in der Regel verwendet, ohne ihnen einen Namen zuzuweisen. Ein Beispiel dafür liefert das eingangs beschriebene Sortierproblem:
>>> sorted([1,4,7,3,5], key=lambda x: -x)
[7, 5, 4, 3, 1]
Betrachten wir noch ein etwas komplexeres Beispiel einer anonymen Funktion mit drei Parametern:
>>> f = lambda x, y, z: (x - y) * z
Anonyme Funktionen können aufgerufen werden, ohne sie vorher zu referenzieren. Dazu muss der lambda-Ausdruck in Klammern gesetzt werden:
>>> (lambda x, y, z: (x - y) * z)(1, 2, 3)
-3