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就会执行匿名函数了。
网友评论