zoukankan      html  css  js  c++  java
  • python -> lambda与def的差别

    lambda能够定义一个匿名函数。而def定义的函数必须有一个名字。

    这应该是lambda与def两者最大的差别。

    与Javascript不同的是,python中匿名函数与非匿名函数须要使用不同的语法来定义。这是由于:


    lambda是一个expression。不是一个statement。

    lambda is an expression, not a statement.


    因此lambda表达式能够出如今def无法出现的地方。比方list comprehension。

    lambda表达式能够匿名也能够不匿名,可是def无法匿名。


    lambda的函数体是一个简单的表达式而不是语句块。

    lambda's body is a single expression, not a block of statements.


    所以lambda中没有return语句。也不能使用if, while等等。其背后的设计哲学为:

    lambda is designed for coding simple functions, and def handles larger tasks.


    Python中的lambda比較简单,基本使用方法例如以下


    >>> f = lambda x, y, z: x + y + z
    >>> f(2, 3, 4)
    


    其等价于


    def func(x, y, z): return x + y + z
    

    就像nested def一样,lambda也满足闭包

    >>> def knights():
    ...   title = 'Sir'
    ...   action = lambda x: title + ' ' + x
    ...   return action
    ... 
    >>> act = knights()
    >>> msg = act('robin')
    >>> msg
    'Sir robin'
    >>> act
    <function knights.<locals>.<lambda> at 0xb6f7f80c>
    </lambda></locals>
    參考文献Learning Python 5th Edtion
  • 相关阅读:
    ColorDialog 组件
    HTTP 错误 404.3
    iis服务器401.3 ACL访问权限问题
    python并发编程(进程操作)
    python并发编程(一些基本概念)
    python网络编程二
    python 网络编程
    python 异常处理
    python模块(hashlib,configparse,logging)
    python面向对象进阶
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6743053.html
Copyright © 2011-2022 走看看