Python lambda和Python def区别分析


Posted in Python onNovember 30, 2014

Python支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做lambda的函数,是从Lisp借用来的,可以用在任何需要函数的地方。

lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda?

>>> def f(x):
...   return x+2
...
>>> f(1)
3
>>> f = lambda x:x+2
>>> f(1)
3
>>> (lambda x:x+2)(1)
3

Python def和Python lambda它们有相似点也有不同点。
相似点: 这两个很重要的相似点就是都可以定义一些固定的方法或者是流程,供给程序来调用,比如上面例子中定义一个变量加2的方法。 输出的结果都是3,如果你要完成一些固定的流程的话,上面几种你都可以任意选择。

上面是相同点,那么有那些不同点?
它们的主要不同点是Python def是语句而Python lambda是表达式。lambda简化了函数定义的书写形式,使代码更为简洁。但是使用函数的定义方式更为直观,易理解。

Python里面语句是可以嵌套的,比如你需要根据某个条件来定义方法,那只能用def。用lambda就会报错。

>>> if a==1:
...   def info():
...     print '1'*5
... else:
...   def info2():
...     print 'info2'

而有的时候你需要在python表达式里操作的时候,那需要用到表达式嵌套,这个时候Python def就不能得到你想要的结果,那只能用Python lambda,如下例子:
输出e字符串出现频率最高的字母:

>>> str='www.linuxeye.com linuxeye.com'
>>> L = ([(i,str.count(i)) for i in set(str)])
[(' ', 1), ('c', 2), ('e', 4), ('i', 2), ('m', 2), ('l', 2), ('o', 2), ('n', 2), ('u', 2), ('w', 3), ('y', 2), ('x', 2), ('.', 3)]
>>> L.sort(key = lambda k:k[1],reverse = True)
>>> print L[0][0]
e
Python 相关文章推荐
python 中的列表解析和生成表达式
Mar 10 Python
python检测远程端口是否打开的方法
Mar 14 Python
Python赋值语句后逗号的作用分析
Jun 08 Python
深入浅析Python字符编码
Nov 12 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
Numpy中的mask的使用
Jul 21 Python
对python中字典keys,values,items的使用详解
Feb 03 Python
Python求正态分布曲线下面积实例
Nov 20 Python
Python类反射机制使用实例解析
Dec 30 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
Python使用pdb调试代码的技巧
May 03 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
Python内置函数之filter map reduce介绍
Nov 30 #Python
Python Queue模块详解
Nov 30 #Python
Python socket C/S结构的聊天室应用实现
Nov 30 #Python
Python open()文件处理使用介绍
Nov 30 #Python
Python fileinput模块使用介绍
Nov 30 #Python
Python 列表list使用介绍
Nov 30 #Python
Python 字典dict使用介绍
Nov 30 #Python
You might like
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
Python3读写ini配置文件的示例
2020/11/06 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
护理专业自荐信
2013/12/03 职场文书
更夫岗位责任制
2014/02/11 职场文书
五年级学生评语
2014/04/22 职场文书
法人授权委托书
2014/09/16 职场文书
亮剑观后感
2015/06/05 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
Vue vee-validate插件的简单使用
2021/06/22 Vue.js