python代码,如何理解lambda表达式?lambda使用方法
发布于 作者:苏南大叔 来源:程序如此灵动~
很多高级编程语言里面,都有lambda
表达式的写法。python
语言里面也有这种lambda
表达式的写法。实际上,拉姆达表达式可以理解为短小精悍一句话的匿名函数。如果铭记这条"短小精悍的匿名函数"总结的话,本文的内容就非常容易理解了。
苏南大叔的“程序如此灵动”技术博客,记录苏南大叔的代码经验总结。本文测试环境:win10
,python@3.11.0
。
lambda是匿名函数
在python
代码中,输出拉姆达的类型,就会显示它是个function
。
say = lambda x: x + "!苏南大叔"
print(say, type(say))
# <function <lambda> at 0x000001FEB80004A0> <class 'function'>
print(say("hola"))
# hola!苏南大叔
既然是个匿名函数,它的使用范围就很小。仅仅在很普通的范围内有效,并不会复用到其它地方。
lambda传参数自执行
是函数就必然可以传参数,和普通的参数相比较的话:
- 就是简单的少了括号的修饰。
- 多个形参就使用逗号进行分割。
如果给这个lambda表达式传递实参的话,普通情况下,就是个自执行(lambda ...)()
的写法。这和js
中的匿名函数的写法,非常类似。
s0 = (lambda: "hola!苏南大叔")()
s1 = (lambda x: x + "!苏南大叔")("hola")
s2 = (lambda x, y: x + "!" + y)("hola", "苏南大叔")
s3 = (lambda x, y, z: x + y + z)("hola", "!", "苏南大叔")
print(s0) # hola!苏南大叔
print(s1) # hola!苏南大叔
print(s2) # hola!苏南大叔
print(s3) # hola!苏南大叔
lambda作为高阶函数参数
可以接受匿名函数(例如本文的lambda
)作为普通参数的函数,称之为高阶函数。而lambda
表达式实质上就是个匿名函数。所以,可以传递到高阶函数中,作为一种特殊的也是比较常见的使用方式。
例子如下:
_list = [9, "100", 6, "77", "99"]
print(sorted(_list, key=lambda x: str(x))) #['100', 6, '77', 9, '99']
print(sorted(_list, key=lambda x: int(x))) #[6, 9, '77', '99', '100']
更多lambda
表达式的使用文章例子:
- https://newsn.net/say/python-sorted.html
- https://newsn.net/say/dataframe-describe-round.html
- https://newsn.net/say/dataframe-split.html
结束语
苏南大叔个人觉得这个lambda
字样也是比较繁杂的,不排除其后续的语法糖进化,比如进化成就一个字母l
。
苏南大叔写了很多python
相关的经验文章了,欢迎点击下面的链接查看python
经验文章集合:


