“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 func

y1 = get_y(1,1)
y1(1) # 结果为2


Python之禅中有这么一句话:Explicit is better than implicit(明了胜于晦涩),一切以保证好的可读性为