ambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。
格式:
lambda [arguments] : expression
例1:
>>> a=lambda x,y:x+y
>>> a(1,2)
3
说明:
将lambda表达式赋值给变量a,之后对a进行传参,1和2,表达式接收到x=1,y=2,进行加法操作,得到最后结果3
例2:
>>> b=lambda x,y:x+y
>>> b(x=1,y=2)
3
>>> b(x=1,z=2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: <lambda>() got an unexpected keyword argument 'z'
说明:
可以看到这里我们进行了指定参数名后进行传参,一样可以达到效果,但是后面我们使用了lambda中不存在得参数,会抛出异常,所以,如果我们需要指定参数名时,一定要和表达式一致
例3:
>>> (lambda x,y:x+y)(1,2)
3
说明:
在这里我们没有将lambda表达式进行赋值给变量,而是直接运行,一样可以得到正确的结果
例4:
>>> (lambda x,y=2:x+y)(x=1)
3
>>> (lambda x,y=2:x+y)(x=1,y=3)
4
说明:
这两个例子演示了,lambda表达式可以给参数设置默认值,并且重置参数值
例5:
>>> def my2(x):
... return lambda y:x+y
...
>>> d=my2(2)
>>> d(5)
7
>>>
说明:
看看这里发生了什么,首先我们将lambda表达式放在了函数中,并且作为返回值返回,然后,变量d调用函数my2,并且传递了x=2,此时返回了lambda表达式,lambda y:2+y,然后就像例1一样,将y=5传递给表达式,最后达到结果7