“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(明了胜于晦涩),一切以保证好的可读性为