python中,使用lambda关键字来创建匿名函数。
语法
lambda [arg1 [,arg2,.....argn]]:expression
匿名函数的优点
- 程序一次行使用,所以不需要定义函数名,节省内存中变量定义空间
2.让程序更加简洁。
匿名函数的几个规则
- 一般也就一行表达式,必须有返回值
- 不能有return
- 可以没有参数,可以有一个或多个参数
无参匿名函数:
>>> t = lambda : True #分号前无任何参数
>>> t()
True
#等价于下面的def定义的函数
>>> def func(): return True
>>> func()
True
带参匿名函数:
>>> lambda x: x**3 #一个参数
>>> lambda x,y,z:x+y+z #多个参数
>>> lambda x,y=3: x*y #允许参数存在默认值
匿名函数的调用:
#直接赋值给一个变量,然后再像一般函数调用
>>> c = lambda x,y,z: x*y*z
>>> c(2,3,4)
24
>>> c = lambda x,y=2: x+y #使用了默认值
>>> c(10) #不输的话,使用默认值2
12
>>> a = lambda *z:z #*z返回的是一个元祖
>>> a('Testing1','Testing2')
('Testing1', 'Testing2')
>>> c = lambda **Arg: Arg #arg返回的是一个字典
>>> c()
{}
#直接后面传递实参
>>> (lambda x,y: x if x> y else y)(101,102)
102
>>> (lambda x:x**2)(3)
9
嵌套使用
#lambda嵌套到普通函数中,lambda函数本身做为return的值
>>> def test(n):
... return lambda x: x+n
...
>>> f=test(4)
>>> f(2)
6
1、lambda只是一个表达式,函数体比def简单很多。
2、lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
3、lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
其中,第三条意味着当你运行
>>>x, y = 4, 5
>>>(lambda x,y:x+y)(7, 8)
结果是
15