Lambdas ermöglichen es Ihnen, eine neue unbenannte Funktion mit weniger Argumenten zu erstellen und die Funktion aufzurufen!
>>> def foobar(x,y,z):
... print "%d, %d, %d" % (x,y,z)
>>> foobar(1,2,3) # rufe normale Funktion auf
>>> bind = lambda x: foobar(x, 10, 20) # binde 10 und 20 an foobar
>>> bind(1) # gib 1, 10, 20 aus
>>> bind = lambda: foobar(1,2,3) # binde alle Elemente
>>> bind() # gib 1, 2, 3 aus
bearbeiten
https://docs.python.org/2/library/functools.html#functools.partial
Wenn Sie vorhaben, benannte Argumente an den Funktionsaufruf zu binden, ist dies ebenfalls anwendbar:
>>> from functools import partial
>>> barfoo = partial(foobar, x=10)
>>> barfoo(y=5,z=6)
21
Bitte beachten Sie, dass Sie, wenn Sie Argumente von links binden, die Argumente nach Namen aufrufen müssen. Wenn Sie von rechts binden, funktioniert es wie erwartet.
>>> barfoo(5,6)
Traceback (most recent call last):
File "", line 1, in
TypeError: foobar() got multiple values for keyword argument 'x'
>>> f = partial(foobar, z=20)
>>> f(1,1)
22