lambdas 允许您使用更少的参数创建一个新的未命名函数并调用该函数!
>>> def foobar(x,y,z):
... print "%d, %d, %d" % (x,y,z)
>>> foobar(1,2,3) # call normal function
>>> bind = lambda x: foobar(x, 10, 20) # bind 10 and 20 to foobar
>>> bind(1) # print 1, 10, 20
>>> bind = lambda: foobar(1,2,3) # bind all elements
>>> bind() # print 1, 2, 3
编辑
https://docs.python.org/2/library/functools.html#functools.partial
如果您打算在函数调用中使用命名参数绑定,这也适用:
>>> from functools import partial
>>> barfoo = partial(foobar, x=10)
>>> barfoo(y=5,z=6)
21
请注意,如果从左侧绑定参数,则需要按名称调用参数。如果从右侧绑定,它会按预期工作。
>>> barfoo(5,6)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: foobar() got multiple values for keyword argument 'x'
>>> f = partial(foobar, z=20)
>>> f(1,1)
22