美文网首页
lambda表达式

lambda表达式

作者: 037251a7c483 | 来源:发表于2017-03-29 23:52 被阅读17次

Python提供了一个函数语法糖——匿名函数。使用lambda表达式来定义。

In [61]: square = lambda x: x*x

In [62]: square(10)
Out[62]: 100

这个例子相当于:

def square(x):
    return x*x

这个例子中,lambda x: x*x 语句,分号前面的x表示的是参数,后面的是x的平方就是作为返回结果。要注意的是匿名函数只支持一个表达式

在举一个传两个参数的例子

In [68]: add = lambda x,y: x+y

In [69]: add(100, 1)
Out[69]: 101

lambda中可以用变长参数吗?也是可以的,下面是一个任意数之和的例子:

In [70]: add = lambda *num: sum(num)

In [71]: add(*[1,2,3])
Out[71]: 6

In [72]: add(*[1,2,3,4,5,6,7,8])
Out[72]: 36

还可以把lambda作为函数返回:

In [81]: def add(n):
   ....:     return lambda x: n+x
   ....: 

In [82]: a = add(100)

In [83]: a(1)  
Out[83]: 101

In [84]: a(2)
Out[84]: 102

In [85]: a
Out[85]: <function __main__.<lambda>>

add(n) 的返回值就是一个函数,所以这里的a也称为了一个函数,只不过是个匿名函数而已。之后继续调用a就会执行匿名函数了。

相关文章

网友评论

      本文标题:lambda表达式

      本文链接:https://www.haomeiwen.com/subject/tbfunttx.html