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