Python Lambda 表达式

Python Lambda 表达式

本文简单介绍一下 lambda 表达式,通过这篇文章,带你了解它的用法以及在什么时候使用。

在 Python 中,使用关键字 lambda 表达式定义一个小的匿名函数。lambda定义的函数和使用 def 一样。它也能用在任何正常的函数可以用的地方。

下面例子定义了一个函数,返回两个数的和:

Python Lambda 表达式

输出:

Python Lambda 表达式

它和使用 def 定义效果是一样的。

Python Lambda 表达式

现在,你肯定想知道为什么有个 lambda 呢?明明用函数就可以实现。 除了使代码更简洁外,还有什么好处呢?

看如下的例子:

Python Lambda 表达式

这个例子没有赋值给一个变量,而是直接用括号 () 包围了 lambda 表达式,然后立刻进行了调用。

看到这里,你可能明白了,使用 lambda 就是一个表达式,它可以用在正常的函数用不到的地方。

什么时候用 lambda 表达式


其实 lambda 表达式可以用在函数用到的任何地方。因为 lambda 函数是匿名的,你不需要指定名称。

最常见的使用的地方就是 sorted() 函数。

Python Lambda 表达式

sorted() 函数根据指定的key,来决定序列的排序。这个的key使用 lambda x: x**2 使用每项的平方来决定每项在列表的位置。

系统内置函数 map() 使用例子:

Python Lambda 表达式

map() 函数接收一个函数,一个序列,函数应用序列的每一项,然后返回。

使用 filter() 函数。

Python Lambda 表达式

filter() 函数过滤序列中的值,它不是每项都返回,而是函数结果返回 True 的项才返回。

lambda 也可以用在函数闭包中, 闭包是指当程序流离开指定的函数时,闭包的函数依然能记得当时的变量值。

Python Lambda 表达式

函数 adder 定义了个闭包,例如当 adder(5) 调用完之后赋值给变量 add5,再调用 add5,它依然记得 x=5,所以调用函数 add5(3) 输出8。


分享到:


相關文章: