简单谈谈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微信库:itchat的用法详解
Aug 14 Python
Python中super函数的用法
Nov 17 Python
基于windows下pip安装python模块时报错总结
Jun 12 Python
python遍历文件夹找出文件夹后缀为py的文件方法
Oct 21 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
Django REST framework视图的用法
Jan 16 Python
django的ORM模型的实现原理
Mar 04 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
python画环形图的方法
Mar 25 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
May 12 Python
python如何删除文件、目录
Jun 23 Python
python中的插入排序的简单用法
Jan 19 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如何编写易读的代码
2007/07/10 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
IE php关于强制下载文件的代码
2008/08/23 Javascript
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
jquery中常用的SET和GET
2009/01/13 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
2018/01/04 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
基于Vue的侧边目录组件的实现
2020/02/05 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
Python global全局变量函数详解
2018/09/18 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
python让函数不返回结果的方法
2020/06/22 Python
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
预备党员党课思想汇报
2014/01/13 职场文书
上班离岗检讨书
2014/01/27 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
高中生逃课检讨书
2014/10/10 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
自查自纠整改报告
2014/11/06 职场文书
倡议书格式及范文
2015/04/29 职场文书
学雷锋活动简报
2015/07/20 职场文书
小学班主任心得体会
2016/01/07 职场文书