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的Flask框架的简介和安装方法
Nov 13 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
Jun 23 Python
python 字典(dict)按键和值排序
Jun 28 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
Jun 29 Python
Python 列表理解及使用方法
Oct 27 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
Python并行分布式框架Celery详解
Oct 15 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
详解Python牛顿插值法
May 11 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
漂亮但不安全的CTB
2006/10/09 PHP
PHP insert语法详解
2008/06/07 PHP
浅析php创建者模式
2014/11/25 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
微信小程序的授权实现过程解析
2019/08/02 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
深入浅析python with语句简介
2018/04/11 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
英国假发网站:Hothair
2018/02/23 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
资深地理教师自我评价
2013/09/21 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
开服装店计划书
2014/08/15 职场文书
金融保险专业求职信
2014/09/03 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
学前班语言教学计划
2015/01/20 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python