Python 中的 lambda 和「真正的」lambda 有什么区别

区别是:真正的 lambda 就是没有名字的函数,能做到任何普通函数能做到的事情,除了方便地递归调用自己。Python 因为本身设计思想,仅仅将 lambda 定位成一个辅助用的短函数,为了避免使用中为一些临时的小代码专门还要写 def 。

Python 中的 lambda 和「真正的」lambda 有什么区别-Worktile社区

真正的 lambda 就是没有名字的函数,能做到任何普通函数能做到的事情,除了方便地递归调用自己。

Python 因为本身设计思想,仅仅将 lambda 定位成一个辅助用的短函数,为了避免使用中为一些临时的小代码专门还要写 def 。

比如说对复杂的数据结构排序,要用函数选择数据结构中排序的依据数据,那么写一个一次性的函数:

def select(data):

    return data.array[0]

sorted(data, key=select)

明显累赘,lambda 的使用场所就是:

sorted(data, key=lambda x:x.array[0])

除类似此之外不提倡用 lambda,lambda 的局限主要就是为了防止滥用。所以 lambda 只能写一行,不能赋值,内部也不能定义等等等。

这就是 Python 的方法论,虽然 Python 也有常用的函数式工具,但是使用的时候必须要谨慎,不要因为卖弄聪明降低可读性和性能。

另外对于问题补充,Currying 是没有支持的,而且这一堆都是函数式编程的特性,匿名函数和它们是平级的,是函数式编程特性的一部分,不存在从属关系。

延伸阅读:

什么是Lambda

Lambda是计算机编程语言,Lambda表达式是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。

Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。

所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表达式分配给委托类型,如下所示:

delegate int del(int i);del myDelegate = x => x * x;int j = myDelegate(5); //j = 25

文章标题:Python 中的 lambda 和「真正的」lambda 有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38522

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编的头像小编

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部