python-匿名函数lambda

隐身守侯 提交于 2020-03-05 00:45:12

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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!