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

python -&gt; lambda与def的差别的更多相关文章

  1. Python的lambda函数与排序

    Python的lambda函数与排序 2010-03-02 15:02 2809人阅读 评论(0) 收藏 举报 lambdapythonlistlispclass工作   目录(?)[+]   前几天 ...

  2. Python中lambda的使用,与它的三个好基友介绍!

    匿名函数lambda 除了def语句,python还提供了一种生成函数对象的表达式形式.由于它与LISP语言中的一个工具类似,所以称为lambda. 就像def一样,这个表达式创建了一个之后能够调用的 ...

  3. Python中Lambda表达式使用

    软件环境 Python: 2.7.13; win10 Lambda描述 python 使用 lambda 表达式来创建匿名函数 lambda只是一个表达式,函数体比def简单很多 lambda的主体是 ...

  4. python中 Lambda,Map,Filter,Itertools,Generator高级函数的用法

    Lambda 函数 Lambda 函数是一种比较小的匿名函数--匿名是指它实际上没有函数名. Python 函数通常使用 def a_function_name() 样式来定义,但对于 lambda ...

  5. python之lambda函数/表达式

    lambda函数也叫匿名函数,允许快速定义单行函数.通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 格式 lambda argument_list: express ...

  6. python中lambda使用

    一.lambda函数 1.lambda函数基础: lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的.如下: """命名的foo函数&q ...

  7. Python中lambda表达式

    一.lambda表达式形式 lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式.冒号前是参数,冒号后是返回值. lambda是一个表达式而不是一个语句. lambda表达式可以出现在Py ...

  8. python:lambda、filter、map、reduce

    lambda 为关键字.filter,map,reduce为内置函数. lambda:实现python中单行最小函数. g = lambda x: x * 2 #相当于 def g(x): retur ...

  9. python 之Lambda表达式

    python 的 lambda 表达式 python写一些执行脚本时,使用lambda就可以省下定义函数的过程,比如说我们只是需要写个简单的脚本来管理服务器时,我们就不用专门定义函数然后再写调用,使用 ...

随机推荐

  1. Media-媒介(媒体、介质)【译】

    Media-媒介(媒体.介质) 转载请注明来源:http://blog.csdn.net/lifeshow           Android支持定制的媒介解码器,需要将定制的解码器接口暴露给框架. ...

  2. Android-经常涉及到的权限

    Android中配置权限的方法: 在AndroidMainFest.xml中加上以下代码 Android中一些经常涉及到的权限: 添加WiFi以及访问网络的权限: <uses-permissio ...

  3. 转: 关于android 机型适配的问题

    转: http://www.csdn.net/article/2015-09-08/2825645

  4. 网页图表控件Highcharts如何详细设置参数

    在下载了Highcharts范例之后,按照如下所示第一步第二步操作.在第二步中,默认并没有提供很多参数设置,比如如何去掉右下角的水印,如何自定义图标的高度宽度,背景颜色等等. 在我的另一篇文章中(Hi ...

  5. PHP上传文件功代码练习(单文件)

    前端: <html> <head><title>upload file</title> <meta http-equiv="Conten ...

  6. java数据库编程:JDBC操作及数据库

    掌握JDBC操作步骤, 掌握数据库驱动程序配置 可以使用JDBC进行数据库连接. JDBC本身是一个标准,因此操作步骤是固定的,以后只需要修改很少代码就可以达到不同数据库间连接转换功能. 操作步骤: ...

  7. 云、Iaas、Paas、Saas

    云服务现在已经快成了一个家喻户晓的词了.如果你不知道PaaS, IaaS 和SaaS的区别,那么也没啥,因为很多人确实不知道. 云其实是互联网的一个隐喻,云计算其实就是使用互联网来接入存储或者运行在远 ...

  8. Jboss下jaxws的开发

    http://xpenxpen.iteye.com/blog/1695069之前用jaxws做web service开发,无论是axis2还是cxf的实现,在tomcat上均成功部署.偏偏项目用的是j ...

  9. css3 使用animation实现动画效果

    .rotation { -webkit-animation-name: rotation; -webkit-animation-duration: 30s; -moz-animation-name: ...

  10. 开源框架AsyncHttpClient使用

    开源框架AsyncHttpClient使用 2013-10-14 15:16:35 分类: Android平台 在大神岩岩的推荐下使用了AsyncHttpClient框架,用过之后感觉还是灰常好用滴. ...