简单谈谈python中的lambda表达式


Posted in Python onJanuary 19, 2018

最近在coding时发现使用lambda还是有诸多优点的,很多时候代码更整洁,更pythonic,所以在此简单总结一下

1.lambda是什么

举个简单的例子:

func = lambda x: x*x

def func(x):
 return x*x

两个func的定义是完全相同的,那两种函数定义方法配合map使用,将list中所有元素求平方,代码会是什么样的,

def func(x):
  return x*x
map(func, [i for i in range(10)])
map(lambda x: x*x, [i for i in range(10)])

对比之下,效果还是显而易见。首先func函数的功能十分简单,而且很有可能只使用这一次,所以说我们在这里定义了一个功能简单、使用频次不高的函数。在这个例子中,使用lambda创建匿名函数不但不会影响代码的可读性,还能精简代码,减少不必要的函数调用。其实这种场景很常见,我们需要一个简单的单行函数,做一件简单的事,我们甚至连函数的名字都无需在意,此时lambda就是我们不错的选择。

2.是否使用lambda

lambda定义了一个匿名函数,使用它并不会带来代码执行效率的提升。lambda通常与map,reduce,filter在遍历列表时配合使用,但是一味的追求lambda的使用,对代码可读性往往带来灾难性的后果。python对lambda有着严苛的约束,毕竟它只能由一条表达式组成。lambda很方便不假,但是如果使用过度,程序的逻辑性看起来就不那么清晰,毕竟每个人对抽象的理解是不同的。

如果一个列表生成式,仅使用for,if,in就能实现,我不会使用lambda

如果函数不足够简单,涉及到循环等复杂逻辑,我会定义函数,让代码更具可读性,此时我不会使用lambda

在我看来,lambda的存在是为了减少单行函数的定义,所以只用来代替单行函数的定义就足够了。

Python 相关文章推荐
Python判断文本中消息重复次数的方法
Apr 27 Python
JSON Web Tokens的实现原理
Apr 02 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
解决nohup执行python程序log文件写入不及时的问题
Jan 14 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
关于python中remove的一些坑小结
Jan 04 Python
python使用logging模块发送邮件代码示例
Jan 18 #Python
zookeeper python接口实例详解
Jan 18 #Python
Python获取当前函数名称方法实例分享
Jan 18 #Python
Python AES加密实例解析
Jan 18 #Python
快速了解python leveldb
Jan 18 #Python
Python实现动态图解析、合成与倒放
Jan 18 #Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 #Python
You might like
DISCUZ 分页代码
2007/01/02 PHP
php实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
javascript 打印页面代码
2009/03/24 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
python使用cPickle模块序列化实例
2014/09/25 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
罗技美国官网:Logitech美国
2020/01/22 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
教师绩效工资方案
2014/02/01 职场文书
林肯就职演讲稿
2014/05/19 职场文书
公司委托书格式
2014/08/01 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
调任通知
2015/04/21 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA