简单谈谈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写入中英文字符串到文件的方法
May 06 Python
Python3安装Pymongo详细步骤
May 26 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
从请求到响应过程中django都做了哪些处理
Aug 01 Python
Python实现去除列表中重复元素的方法总结【7种方法】
Feb 16 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
Python+opencv+pyaudio实现带声音屏幕录制
Dec 23 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
Python pickle模块常用方法代码实例
Oct 10 Python
python 实现图片修复(可用于去水印)
Nov 19 Python
Python安装Bs4的多种方法
Nov 28 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输出数组中重名的元素的几种处理方法
2012/09/05 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
Python中的集合类型知识讲解
2015/08/19 Python
python如何在循环引用中管理内存
2018/03/20 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
python处理csv中的空值方法
2018/06/22 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
人事部岗位职责范本
2014/03/05 职场文书
2014年教师工作总结
2014/11/10 职场文书
征求意见函
2015/06/05 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript