next up previous contents index 6163656769
Next: 5. Klassen Up: 4. Funktionen Previous: 4.5 Ausgabe   Contents   Index


4.6 lambda-Ausdrücke

Wir denken uns eine Funktion otto, die nichts weiter tun soll, als eine Summe von drei eingegebenen Werten zu berechnen.

>>>def otto(x,y,z): return x+y+z

...

>>>otto(1,2,3)

6

So weit so gut. Die Funktion besteht nur aus einer einzigen Anweisung. Daher haben wir sowohl die def-Anweisung, als auch die Funktionsanweisung in eine Zeile geschrieben. Solche einzeiligen Funktionen können nun auch ohne Namensgebung erstellt werden, und zwar in der Form.

>>>lambda x,y,z: x+y+z
Damit lässt sich allerdings nichts mehr anfangen, da anschliessend auf das Objekt nicht mehr zugegriffen werden kann. Eine Namenszuweisung wie

>>>x=lambda x,y,z: x+y+z
ist natürlich möglich und der Aufruf

>>>x(1,2,3)

6

funktioniert genauso wie unser otto. Natürlich kann das Ganze auch mit vorbelegten Parametern ausgenutzt werden:

>>>x=(lambda x='arbete ', y='und ', z='arbete': x+y+z)

>>>x('bete ')

'bete und arbete'

lambda-Ausdrücke erzeugen also ein anonymes Funktionsobjekt, dem zunächst kein Name zugewiesen wird. Der Vorteil ist der, dass solche Ausdrücke als Argumente an andere Funktionen weitergegeben werden können, was mit einer def-Anweisung nicht möglich ist. Wirklich merken müssen Sie sich allerdings, dass lambda-Ausdrücke immer nur aus einer Funktionsanweisung bestehen dürfen. Ein if-Verzweigung in einem lambda-Ausdruck ist also nicht möglich.


next up previous contents index 6163656769
Next: 5. Klassen Up: 4. Funktionen Previous: 4.5 Ausgabe   Contents   Index
Heiko Schroeder 2003-03-19