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利用正则表达式提取字符串
Dec 08 Python
python使用arcpy.mapping模块批量出图
Mar 06 Python
python中安装模块包版本冲突问题的解决
May 02 Python
python3连接MySQL数据库实例详解
May 24 Python
django 快速启动数据库客户端程序的方法示例
Aug 16 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
浅谈Python程序的错误:变量未定义
Jun 02 Python
为什么说python更适合树莓派编程
Jul 20 Python
Python连接Mysql进行增删改查的示例代码
Aug 03 Python
Python unittest如何生成HTMLTestRunner模块
Sep 08 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
基于iScroll实现内容滚动效果
2018/03/21 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
Bootstrap-table自定义可编辑每页显示记录数
2018/09/07 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
python绘制双柱形图代码实例
2017/12/14 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
2018/04/28 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
护校行动方案
2014/05/31 职场文书
2015年司法局工作总结
2015/05/22 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js