简单谈谈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多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 Python
Python中的fileinput模块的简单实用示例
Jul 09 Python
详解python单例模式与metaclass
Jan 15 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
解决pycharm remote deployment 配置的问题
Jun 27 Python
python中对_init_的理解及实例解析
Oct 11 Python
如何获取Python简单for循环索引
Nov 21 Python
Django集成celery发送异步邮件实例
Dec 17 Python
Python concurrent.futures模块使用实例
Dec 24 Python
解决django的template中如果无法引用MEDIA_URL问题
Apr 07 Python
Python json读写方式和字典相互转化
Apr 18 Python
Python的历史与优缺点整理
May 26 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
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
javascript 面向对象编程 function也是类
2009/09/17 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
JavaScript 处理树数据结构的方法示例
2019/06/16 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
python reduce 函数使用详解
2017/12/05 Python
Python实现的爬虫刷回复功能示例
2018/06/07 Python
用pycharm开发django项目示例代码
2019/06/13 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
Python decimal模块使用方法详解
2020/06/08 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
母亲节感恩活动记录
2014/03/16 职场文书
设备技术员岗位职责
2015/04/11 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python