lambda表达式
示例
p = lambda x,y:x+y
print(p(4,6))
a = lambda x,y,z:(x+8)*y-z
print(a(5,6,8))
一个语法
- lambda argument_list: expression
1. 这里的argument_list是参数列表,它的结构与Python中函数(function)的参数列表是一样的。具体来说,argument_list可以有非常多的形式。例如:
- a, b
- a=1, b=2
- *args
- **kwargs
- a, b=1, *args
- 空
2. 这里的expression是一个关于参数的表达式。表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。以下都是合法的表达式:
- 1
- None
- a + b
- sum(a)
- 1 if a >10 else 0
3. 这里的lambda argument_list: expression表示的是一个函数。这个函数叫做lambda函数。
三个特性
- lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。
- lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。
- lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明。
四个用法
- 将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。
- 将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。
- 将lambda函数作为其他函数的返回值,返回给调用者。
- 将lambda函数作为参数传递给其他函数。
参考
关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解