lambda匿名函数
用lambda函数首先减少了代码的冗余,其次,用lambda函数,不用费神地去命名一个函数的名字,可以快速的实现某项功能,最后,lambda函数使代码的可读性更强,程序看起来更加简洁。
lambda函数的语法是唯一的,其形式如下:
lambda argument_list:expersion
语法中的argument_list是参数列表,它的结构与Python中函数(function)的参数列表是一样的,例如
a,b
a=1,b=2
*args
**kwargs
a,b=1,*args
空
....
语法中的expression是一个关于参数的表达式,表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。比如以下的一些合法的表达式
1
None
a+b
sum(a)
1 if a >10 else 0
......
用法
1)直接赋给一个变量,然后再像一般函数那样调用
c=lambda x,y,z:x*y*z
c(2,3,4)
24
当然,也可以在函数后面直接传递实参
(lambda x:x**2)(3)
9
2)将lambda函数作为参数传递给其他函数比如说结合map、filter、sorted、reduce等一些Python内置函数使用,下面举例说明。
fliter(lambda x:x%3==0,[1,2,3,4,5,6])
[3,6]
squares = map(lambda x:x**2,range(5)
print(lsit(squares))
[0,1,4,9,16]
3)嵌套使用将lambda函数嵌套到普通函数中,lambda函数本身做为return的值
def increment(n):
return lambda x:x+n
f=increment(4)
f(2)
6
4)字符串联合,有默认值,也可以用x=(lambda...)这种格式
x=(lambda x='Boo',y='Too',z='Z00':x+y+z)
print(x('Foo'))
'FooTooZoo'