python-匿名函数lambda

时间:2022-06-01 20:52:09

有些时候,我们在传入函数时,不需要显示的定义函数,直接传入匿名函数更方便。在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]