Python lambda表达式原理及用法解析


Posted in Python onAugust 18, 2020

开篇先明义:lambda是表达式,而def函数是语句代码块

所以lambda其实就是一个稍微高级一点的式子而已,只不过这个式子比较长,而且还会自己进行一些逻辑上的处理而已,心里不要虚

lambda也被叫做匿名函数,通俗点说就是一个没有名字的函数,那可不就是一个函数式子吗?在python的垃圾回收机制来看,如果一些内存空间没有引用指向,那这些内存空间就被回收掉,所以这个连名字都没有的匿名函数,肯定是用过即销的。

综上所述,我们可以很容易的得出lambda表达式的特点:

1.用一个表达式就能实现简单的函数逻辑

2.没有名字,只是一个表达式

3.用过即销

优点:

1.简单功能可以不用函数

2.节省内存空间,不止是用过即销节省,它在建立函数的时候也节省,普通的def函数在初始化的时候会进行栈分配,而lambda则不需要

3.它作为一个表达式,可以嵌套在其他的地方使用,比如列表中,而def函数则不行

下面来举例来具体看看:

m, n = 1,2
def num(m, n):
  return m+n
f = lambda m, n : m+n
def_result = num(m,n)
lambda_result = f(m, n)
print("def_result:",def_result)
print("lambda_result:",lambda_result)

打印结果:

def_result: 3
lambda_result: 3

上面程序代码的第4、6行可以合并为:

lambda_result = (lambda m, n : m+n)(m, n)

再举一个lambda用来编写跳转表(jump table)的栗子,其实就是列表中嵌套lambda表达式

lst = [lambda x,y:x+y,lambda x,y:x*y, lambda x,y:x/y,lambda x,y:x-y]
print(lst[0](1,2))
print(lst[1](1,2))
print(lst[2](1,2))
print(lst[3](1,2))
lst2 = {"add":lambda x,y:x+y, "reduce":lambda x,y:x-y}
print(lst2["add"](1,2))

打印结果为:

3
2
0.5
-1
3

上面的这一堆栗子都可以更清晰的看出lambda是一个表达式,它后面跟的就是一个简短的函数表达式

这里引出lambda表达式的语法格式:

lambda 参数:表达式

其中:

1.参数可以是一个、多个、可以是任何类型的变量

2.表达式只可以是一个式子,不可以是一个语句

# 下面的f、glambda表达式的书写都是错误的
# f = lambda x,y : if x>y return x
# g = lambda x,y : return x>y
m = lambda x,y: x+y
n = lambda a,b: a>=0
# print(f(1,2))
# print(g(1,2))
print(m(1,2))
print(n(1,2))

lambda的用处:

lambda常常和map、filter、reduce、sorted、列表推导式 结合一起用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
全面解读Python Web开发框架Django
Jun 30 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
Django实现学员管理系统
Feb 26 Python
django页面跳转问题及注意事项
Jul 18 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
Django 实现Admin自动填充当前用户的示例代码
Nov 18 Python
python基于plotly实现画饼状图代码实例
Dec 16 Python
Python利用Xpath选择器爬取京东网商品信息
Jun 01 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
Python接口自动化测试的实现
Aug 28 Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 Python
python 使用建议与技巧分享(四)
Aug 18 #Python
Python正则re模块使用步骤及原理解析
Aug 18 #Python
python使用建议技巧分享(三)
Aug 18 #Python
python3跳出一个循环的实例操作
Aug 18 #Python
OpenCV图片漫画效果的实现示例
Aug 18 #Python
Django DRF APIView源码运行流程详解
Aug 17 #Python
Django CBV模型源码运行流程详解
Aug 17 #Python
You might like
substr()函数中文版
2006/10/09 PHP
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
js实现图片粘贴上传到服务器并展示的实例
2017/11/08 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
党校培训自我鉴定
2014/02/01 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
Python中相见恨晚的技巧
2021/04/13 Python
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
浅谈JavaScript作用域
2021/12/06 Javascript