什么是lambda函数?
lambda函数,因其组成部分只有参数列表(argument_lsit),表达式(expression)二部分,也被称为匿名函数。
语法格式如下
lambda argument_list:expression
其中,argument_list的形式非常多,可以有以下几种:
- a, b
- a=1, b=2
- *args
- **kwargs
- a, b=1, *args
- 空
expression是关于参数的一个表达式,表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的,如下:
- 1
- None
- a + b
- sum(a)
- 1 if a >10 else 0
最简单的示例:
t = lambda a, b: a + b # 将匿名函数传给t变量
ressult = t(1,2)
print(ressult) # 3
注意:
x = 6
s = lambda :x*x
print(s()) # 36
如果上面等同于这种写法
s = lambda x: x*x
print(s(6))
使用场景
lambda的使用场景并不多,而且在我们平时学习阶段也好,开发阶段也好,很难用到,或者说能用的时候也想不起来。
个人认为比较常见的场景有3种:
第一种:将lambda表达式赋给一个变量,例如上面的简单示例
第二种:将lambda表达式当做函数的返回值,
第三种:当做参数传递给其他函数,这种用法比较典型的就是python中的filter,sorted,map等内置函数。(插一句,filter与map函数完全可以用推导式代替,而且更加简单明了,龟叔一直想把这两个函数舍弃- -。)
示例:
1、将能被3整除的元素过滤出来
filter(lambda x: x % 3 == 0, [1, 2, 3])
2、绝对值排序
print(sorted([1, 2, -3, 4, -5, 6, -7, 8, -9])) # [-9, -7, -5, -3, 1, 2, 4, 6, 8]
print(sorted([1, 2, -3, 4, -5, 6, -7, 8, -9], key=lambda x: abs(x))) # [1, 2, -3, 4, -5, 6, -7, 8, -9]
lambda作为一个平时很不起眼,但关键时候能用到的技巧,还是值得我们花一点时间去学习,总结一下的。
尤其是在一些python开源项目的源码中,用的很精巧。(我记得在看celery还是rabbitmq的源码来着,主要是第一种,第二种用法)
如果本篇文章对你有帮助,可否在文章右侧点个赞再走呢~~
本文为原创,转载请注明出处