简单谈谈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中的闭包
Aug 11 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
python获取array中指定元素的示例
Nov 26 Python
Python Request类源码实现方法及原理解析
Aug 17 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 Python
python实现会员管理系统
Mar 18 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 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
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
苹果音乐订阅:Apple Music
2018/08/02 全球购物
正隆泰信息技术有限公司上机题
2012/06/14 面试题
营销人才自我鉴定范文
2013/12/25 职场文书
军校本科大学生自我评价
2014/01/14 职场文书
关于期中考试的反思
2014/02/02 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
如何写辞职书
2015/02/26 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
分析Netty直接内存原理及应用
2021/06/14 Java/Android
简述Java中throw-throws异常抛出
2021/08/07 Java/Android