



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: 5. Klassen
Up: 4. Funktionen
Previous: 4.5 Ausgabe
Contents
Index
Heiko Schroeder
2003-03-19