高阶函数可以接收函数做参数,有些时候,我们不需要显式地定义函数,直接传入匿名函数更方便。还是
以map()函数为例,计算 f(x)=x^2 时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:
>>> 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,返回值就是该表达式的结果。
返回函数的时候,也可以返回匿名函数:
>>> my_abs = lambda x: -x if x<0 else x
>>> my_abs(-1)
1