在Python中,除了def 之外,还提供了一种生成函数对象的表达式形式,即Lambda表达式,它可以创建小的匿名函数,起到一个函数速写的作用。
Lambda表达式定义及作用
Lambda表达式是一行的函数,它们在其他语言中也被称为匿名函数,即函数没有具体的名称。如果你不想在程序中对一个函数使用两次,你也许会想用Lambda表达式,它们和普通的函数完全一样。而且当使用函数作为参数的时候,Lambda表达式非常有用,可以让代码简单、简洁。
Lambda与命名函数def的区别
1、def创建的方法是有名称的,而Lambda没有,可以立刻传递(无需变量)。Python Lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量(函数名)。
2、Python Lambda只是一个表达式,而def是一个语句。Lambda表达式运行起来像一个函数,当被调用时创建一个框架对象。Lambda能够出现在Python语法不允许def出现的地方。此外,作为一个表达式,Lambda返回了一个值(一个新的函数),可以选择性的赋值给一个变量名,def语句则是在头部将一个新的函数赋值给一个变量名,而不是将这个函数作为结果返回。
3、Lambda表达式” : “后面,只能有一个表达式,def则可以有多个。Lambda表达式内部只能包含一行代码,而命名函数内对此无限制。Lambda的主体是一个单个的表达式,而不是一个代码块。
4、Lambda可以直接作为Python列表或Python字典的成员,返回Lambda表达式中最后一个表达式的值。
- Lambda一般用来定义简单的函数,而def可以定义复杂的函数;Lambda函数不能共享给别的程序调用,def可以。因此语句嵌套用def,表达式嵌套用Lambda。
对很多Python程序员来说,Lambda表达式是一种古怪而又陌生的语法。它本身缺少名称和文档,但在使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简,因此很多企业要求Python程序员掌握Lambda表达式。