“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包。
lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,就重新定义一个函数吧。
两种使用场景:
应用在函数式编程中
Python提供了很多函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。如下:
# 需求:将列表中的元素按照绝对值大小进行升序排列list1 = [3,5,-4,-1,0,-2,-6]sorted(list1, key=lambda x: abs(x))
当然,也可以如下:
list1 = [3,5,-4,-1,0,-2,-6]def get_abs(x): return abs(x)sorted(list1,key=get_abs)
只不过这种方式的代码看起来不够Pythonic(一种python代码标准)——具体可学习书籍——编写高质量代码:改善python程序的91个建议
应用在闭包中
def get_y(a,b): return lambda x:ax+b y1 = get_y(1,1)y1(1) # 结果为2
当然,也可以用常规函数实现闭包,如下:
def get_y(a,b): def func(x): return ax+b return funcy1 = get_y(1,1)y1(1) # 结果为2
Python之禅中有这么一句话:Explicit is better than implicit(明了胜于晦涩),一切以保证好的可读性为