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 18 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 Python
浅谈Python基础—判断和循环
Mar 22 Python
python os模块简单应用示例
May 23 Python
Python partial函数原理及用法解析
Dec 11 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
Python 过滤错误log并导出的实例
Dec 26 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
Django权限设置及验证方式
May 13 Python
Pycharm中配置远程Docker运行环境的教程图解
Jun 11 Python
python中pandas.read_csv()函数的深入讲解
Mar 29 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 购物车的例子
2009/05/04 PHP
php里array_work用法实例分析
2015/07/13 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
js运动事件函数详解
2016/10/21 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
Python引用模块和查找模块路径
2016/03/17 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
python selenium firefox使用详解
2019/02/26 Python
python中的decimal类型转换实例详解
2019/06/26 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
Python实现自动访问网页的例子
2020/02/21 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
HTML5标签小集
2011/08/02 HTML / CSS
前端实现打印图像功能
2019/08/27 HTML / CSS
添柏岚英国官方网站:Timberland英国
2019/11/28 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
个人培训自我鉴定
2014/03/28 职场文书
明星邀请函
2015/02/02 职场文书
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫