lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。
lambda语法
lambda [arg1 [,arg2,…argn]]:expression
# 普通python函数
def func(a,b,c):
return a+b+c
print func(1,2,3)
# 结果为 6
# lambda匿名函数
f = lambda a,b,c: a+b+c
print f(1,2,3)
# 结果为 6
# 在代码:f = lambda a,b,c: a+b+c 中,lambda表示匿名函数,
# 冒号 “:”之前的a,b,c表示它们是这个函数的参数。
# 匿名函数不需要return来返回值,表达式本身结果就是返回值。
lambda函数用法:
1.将函数赋值给一个变量,然后再像一般函数调用
>>> a = lambda x, y, z: x*y*z
>>> a(2,3,4)
24
2.直接在lambda表达式后面传递实参
>>> (lambda x, y: x if x>y else y)(1, 2)
2
3.将lambda嵌套到普通函数中,lambda函数本身做为return的值
4. 将lambda函数作为参数传递给其他函数
使用lambda来创建匿名函数。
MAXIMUM = lambda x,y : (x > y) * x + (x < y) * y
MINIMUM = lambda x,y : (x > y) * y + (x < y) * x
if __name__ == '__main__':
a = 10
b = 20
print ('The largar one is %d' % MAXIMUM(a,b))
print ('The lower one is %d' % MINIMUM(a,b))
运行结果:
lambda 并不会带来程序运行效率的提高,只会使代码更简洁。
如果可以使用for…in…if来完成的,坚决不用lambda。
如果使用lambda,lambda内不要包含循环,如果有,应定义函数来完成,使代码获得可重用性和更好的可读性。
lambda 是为了减少单行函数的定义而存在的。