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 Property属性的2种用法
Jun 21 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
Pandas之groupby( )用法笔记小结
Jul 23 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
python实现邮件发送功能
Aug 10 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
python 追踪except信息方式
Apr 25 Python
Python验证码截取识别代码实例
May 16 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 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连接Access数据库错误及解决方法
2013/06/20 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
小程序日历控件使用方法详解
2018/12/29 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
python图像处理之镜像实现方法
2015/05/30 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
Exception类的常用方法
2012/06/16 面试题
《她是我的朋友》教学反思
2014/04/26 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
北京故宫的导游词
2015/01/31 职场文书
学校远程教育工作总结
2015/08/11 职场文书
深入理解redis中multi与pipeline
2021/06/02 Redis
Go语言安装并操作redis的go-redis库
2022/04/14 Golang
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS