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 SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
python3 破解 geetest(极验)的滑块验证码功能
Feb 24 Python
Numpy中转置transpose、T和swapaxes的实例讲解
Apr 17 Python
python3+PyQt5重新实现QT事件处理程序
Apr 19 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
8种用Python实现线性回归的方法对比详解
Jul 10 Python
numpy数组广播的机制
Jul 12 Python
win10下python2和python3共存问题解决方法
Dec 23 Python
基于Python的Jenkins的二次开发操作
May 12 Python
Python判断变量是否是None写法代码实例
Oct 09 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分页函数
2006/10/09 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
js实现倒计时时钟的示例代码
2013/12/17 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
Node.js学习入门
2017/01/03 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
python实现的文件夹清理程序分享
2014/11/22 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
python内存动态分配过程详解
2019/07/15 Python
解决python 上传图片限制格式问题
2019/10/30 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
移动通信专业自荐信范文
2013/11/12 职场文书
岗位职责的构建方法
2014/02/01 职场文书
求职自荐信怎么写
2014/03/06 职场文书
优秀家长自荐材料
2014/08/26 职场文书
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技