标签:
一lambda函数基础
1.lambda函数为匿名函数,即没有具体的函数名,而def函数创建的函数有函数名。
>>> def foo(): return ‘test‘ #命名为foo的函数
>>> lambda:‘test‘ #用lambda关键字创建,等同于上面的函数
<function <lambda> at 0x0000000002FC18C8>
上面lambda函数创建的一个函数对象,并没有保存或调用它,随时会被收回,下面我们保存并调用:
>>> a=lambda:‘test‘
>>> a()
lambda [arg1[,arg2,arg3....argN]]:expression
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象。
2.无参数与有参数情况
无参数即冒号前面没有,如上述例子
有参数的情况:
>>> def add(x,y): return x+y
>>> add2=lambda x,y:x+y
>>> add(2,2)
4
>>> add2(2,2)
4
>>> def sum1(x,y=10):return x+y
>>> sum2=lambda x,y=10:x+y
>>> sum1(2)
12
>>> sum2(2)
12
>>> sum2(1,100)
101
三、不同之处
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。
lambda也可以出现在def函数中:
>>> def action(x):
return lambda y:x+y
>>> a=action(2)
>>> a(22)
24
这里定义了一个action函数,返回了一个lambda表达式。其中lambda表达式获取到了上层def作用域的变量名x的值。
a是action函数的返回值,a(22),即是调用了action返回的lambda表达式。
标签:
原文地址:http://www.cnblogs.com/moady/p/5732071.html