简单谈谈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里使用正则表达式的组嵌套实例详解
Oct 24 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
Python Logging 日志记录入门学习
Jun 02 Python
用python实现刷点击率的示例代码
Feb 21 Python
python命令行参数用法实例分析
Jun 25 Python
浅谈python图片处理Image和skimage的区别
Aug 04 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
python微信公众号开发简单流程实现
Mar 09 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
Python中的With语句的使用及原理
Jul 29 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 parse_url 一个好用的函数
2009/10/03 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
2016/11/24 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
探讨Vue.js的组件和模板
2017/10/27 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
Python生成随机密码的方法
2017/06/16 Python
python实现支付宝转账接口
2019/05/07 Python
Python面向对象编程基础实例分析
2020/01/17 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
pandas处理csv文件的方法步骤
2020/10/16 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
武汉高蓝德国际.net机试
2016/06/24 面试题
元旦晚会开场白
2015/05/29 职场文书
大学生党课感想
2015/08/11 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
2016年学校招生广告语
2016/01/28 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL