lambda匿名函数
1. lambda是匿名函数,但是可以命名,名字在等号左边
2. lambda中只能包含一个表达式,不能包含复合语句
语法:
<函数名> = lambda <参数> : <表达式>
f = lambda x, y, z: x+y+z #f是表达式的名字
>>> f(1,2,3) #像函数一样调用
6
3. lambda是一个表达式,而不是语句
- 所以lambda能够出现在Python语法不允许def出现的地方
- 作为一个表达式,lambda返回一个值(一个新的函数),可以选择性地被赋值给一个变量名
4. lambda的主体是一个单独的表达式,而不是一个代码块
- 这样设计的目的是限制程序的嵌套:lambda是一个为编写简单的函数而设计的,而def用来处理更大的任务
- def 和lambda都能完成同样 种类的工作
>>> x = (lambda a = "fee", b = "fie", c = "cio" : a + b + c)
>>> x("acb")
'acbfiecio'
5 . lambda嵌套
在外层嵌套被调用的时候,嵌套在内的lambda能够获取到在外层函数作用域中变量名x的值
>>> def action(x):
>>> return (lambda y:x + y)
>>> act = action(99)
<function __main__.action.<locals>.<lambda>>
>>> act(2)
101
出于对代码可读性的考虑,一般最好避免使用嵌套的lambda