Python lambda?

2 Antworten

Lambdas sind anonyme Funktionen, also Funktionen, die keinen Namen tragen und nicht via Name referenziert werden können. Natürlich mußt Du die Parameter irgendwie benennen x ist hier der Name des Parameters.

>>> def plusone(x):
...   return x+1
...
>>> plusone(12)
13

Einfache Funktion, soweit so klar.

>>> t=lambda x: x+1
>>> t(12)
13

Hier habe ich einem Lambda einen Namen gegeben, um es aufrufen zu können, genausogut kann ich dieses Lambda eben als namenlos Funktion als Parameter übergeben, wie in Deinem Beispiel, man kann das übrigens auch mit mehreren Parametern machen:

>>> t=lambda x,y:x if x<y else y
>>> t(3,4)
3
>>> t(8,4)
4

Lambdas werden gerne im Kontext von Sortieren verwendet, weil man dadurch flexibler Vergleichskriterien festlegen kann, ohne daß man einen Operator überladen müsste.

Hier mal eine Nutzung als 'Closure':

>>> def calc(x):
...    return {'+': lambda x,y:x+y, '-': lambda x,y:x-y, '*': lambda x,y:x*y, '/': lambda x,y:x/y}[x]
...
>>> calc('+')(3,4)
7
>>> calc('/')(8,3)
2.6666666666666665
Was macht lambda in diesem Code und wofür steht x?

Mit Lambdas kann man kleine, namenlose Funktionen direkt an Ort und Stelle definieren, statt dem üblichen Weg mit def: https://www.python-kurs.eu/lambda.php

Das ist z.B. dann sinnvoll, wenn die Funktion eh nur an einer Stelle benötigt wird. In diesem Programm wird sie zum Sortieren nach Datum ("due date") verwendet: man kann der sort-Methode so mitgeben, wonach sie eigentlich sortieren soll.

x steht für den übergebenen Wert, also für einen formalen Parameter, so wie bei jeder Funktionsdefinition.