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

    所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
    分享到: