有些时候,我们在传入函数时,不需要显示的定义函数,直接传入匿名函数更方便。在python中,对匿名函数提供了有限支持。以map()函数为例,计算f() = x2,使用匿名函数:
>>> list(map(lambda x:x*x,[1,2,3,4,5])) [1, 4, 9, 16, 25]
对比可知,匿名函数lambda x:x*x 实际上相当于:
>>> def f(x): ... return x*x ...
关键字lambda表示匿名函数,冒号前面的x表示函数的参数。
匿名函数有个限制,就是只能有一个表达式,不用谢return,返回值就是该表达式的结果。
匿名函数有个好处,因为函数没有名字,不用担心函数名会冲突!
匿名函数也是函数对象,所以可以把匿名函数赋值给一个变量;匿名函数也可以作为返回值返回:
>>> f = lambda x:x*x >>> f <function <lambda> at 0x0343D660> >>> f(3) 9
>>> def b(x,y):
... return lambda :x*x+y*y
...
>>> b(2,3)
<function b.<locals>.<lambda> at 0x03597198>
>>> l = b(2,3)
>>> l()
13
例子:使用lambda函数,返回range(1,20)之间的偶数:
>>> list(filter(lambda x:x%2 == 0,range(1,20))) [2, 4, 6, 8, 10, 12, 14, 16, 18]
笑声激发自强,发愤、图强、飞身向上