概述
python 中的 lambda 比较简单,只是作为创建匿名函数来使用
- lambda 只是一个表达式,而不是一个代码块。类似于 C++ 中的 define ,但比 define 要简单.Python 中的 lambda 只能封装有限的逻辑进去。
 - lambda 拥有自己的全名空间,且不能访问自有参数列表之外及全局的参数。
 
语法
labmda 函数的语法只包含一个语句:
| 
					 1  | 
						lambda [arg ...] : exception  | 
					
lambda 可以传入多个参数,使用逗号 "," 分隔。 exception 使用这些参数进行运算并将结果返回。这里的 exception 隐藏了 return 关键词。 示例:
| 
					 1 2  | 
						fun = lambda a,b,c : a+b+c print "call fun(1,2,3) : " , fun(1,2,3)  | 
					
以上输出:
| 
					 1  | 
						call fun(1,2,3) : 6  | 
					
在 python 中的使用
lambda 的使用比较灵活。例如可以在函数内部定义匿名函数,实现简单逻辑并在函数内部使用。另一个常见的应用场景则是作为匿名函数对象在迭代器中使用。比如:
| 
					 1 2 3  | 
						map(function, iterable, ...) filter(function, iterable) reduce(function, iterable[, initializer])  | 
					
- map : 对迭代器招待 function 操作,并将操作后的 list 返回
 - filter : function 应该返回一个布尔值,对迭代器操作为 False 的,将从 List 里排除
 - reduce : 对迭代器进行累计操作,即将上一次操作的结果作为function 的第一个参数进行下一次操作。reduce 最后一个参数作为可选参数,将在首先参与运算。
 
这几个函数的一般用法如下:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  | 
						def funMap(val):     val = val + 1     return val def funFilter(val):     return  val % 2 == 0 def funReduce(x,y):     return x+y #main========== #构造数组 lst = map(funMap,range(0,11)) print lst #过滤出数组中的偶数 lst = filter(funFilter,lst) print lst #将数组中的每个数累加(首先加10) print reduce(funReduce,lst,10)  | 
					
可以看到,我们需要为每个函数再定义一个函数,作为参数传入。 如果我们使用 lambda, 可以简化这些工作:
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						#构造数组 lst = map(lambda x : x + 1, range(0,11)) print lst #过滤出数组中的偶数 lst = filter(lambda x : x % 2 == 0, lst) print lst #将数组中的每个数累加(首先加10) print reduce(lambda x,y : x + y, lst, 10)  | 
					
上面两种写法都输出:
| 
					 1 2 3  | 
						[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] [2, 4, 6, 8, 10] 40  | 
					
但是,显然使用lambda的写法更加优雅。