-
Python入门笔记(20):Python函数(3):关于lambda
添加时间:2013-7-8 点击量:一、lambda函数
1、lambda函数根蒂根基:
lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的办法是有名称的。如下:
定名的foo函数
def foo():return beginman #Python中单行参数可以和题目写在一行lambda关键字创建匿名函数,该表达式同以上函数
lambda:beginman上方的只是简单的用lambda创建一个函数对象,并没有保存它也没有调用它,时刻会被收受接管了。这里我们保存并调用:
bar = lambda:beginman
print bar() #beginman从上方几个例子中,可易懂得Python lambda语法:
lambda [arg1[,arg2,arg3....argN]]:expression
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象。
print lambda:beginman #<function <lambda> at 0 x00B00A30>
2、无参数
若是没有参数,则lambda冒号前面就没有,如以上例子。
3、有参数
def add(x,y):return x+y
add2 = lambda x,y:x+y
print add2(1,2) #3
def sum(x,y=10):return x+y
sum2 = lambda x,y=10:x+y
print sum2(1) #11
print sum2(1,100) #101二、lambda与def
上方的例子中,可知lambda函数只是创建简单的函数对象,是一个函数的单行版本,然则这种语句因为机能的原因,调用的时辰绕过函数的栈分派。python lambda还有哪些和def不一样呢?
1 、python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量。
如:
>>> def foo():return foo()
>>> foo
<function foo at 0 x011A34F0>2、python lambda它只是一个表达式,而def则是一个语句。lambda表达式运行起来像一个函数,当被调用时创建一个框架对象。
三、lambda函数的用处
小我认为有以下:
1、对于单行函数,应用lambda可以省去定义函数的过程,让代码加倍精简。
2、在非多次调用的函数的景象下,lambda表达式即用既得,进步机能
重视:若是for..in..if能做的,好不要选择lambda
四、参考
http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html
http://www.cnblogs.com/wanpython/archive/2010/11/01/1865919.html
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》