Python中的Lambda表达式和匿名函数的使用

可以使用lambda关键字创建小型匿名函数。 例如,

>>> g = lambda a, b : a + b
>>> g(1,2)
3
>>> g(3,4)
7

函数g返回其两个参数的总和。

Lambda函数可用于需要函数对象的任何地方。 它们在语法上仅限于单个表达式。

它与如下函数等效:

def g(a, b):
     return a + b

从语义上讲,它们只是普通函数定义的语法糖。 与嵌套函数定义一样,lambda函数可以从包含范围引用变量:

>>> def make_incrementor(n):
...     return lambda x: x + n
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43

Python中,也有几个定义好的全局函数filter, map, reduce经常与lambda表过式搭配使用。

>>> arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>
>>> print filter(lambda x: x % 3 == 0, foo)
[18, 9, 24, 12, 27]
>>>
>>> print map(lambda x: x * 2 + 10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
>>>
>>> print reduce(lambda x, y: x + y, foo)
139