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逐行读取文件内容的三种方法
Jan 20 Python
实例解析Python的Twisted框架中Deferred对象的用法
May 25 Python
Python中属性和描述符的正确使用
Aug 23 Python
python常见的格式化输出小结
Dec 15 Python
Python入门之三角函数全解【收藏】
Nov 08 Python
Python实现朴素贝叶斯分类器的方法详解
Jul 04 Python
Python类和对象的定义与实际应用案例分析
Dec 27 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
让你相见恨晚的十个Python骚操作
Nov 18 Python
python中xlutils库用法浅析
Dec 29 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
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
js查找节点的方法小结
2015/01/13 Javascript
详解JavaScript中的blink()方法的使用
2015/06/08 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
python文件操作之目录遍历实例分析
2015/05/20 Python
Python实现建立SSH连接的方法
2015/06/03 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
django反向解析和正向解析的方式
2018/06/05 Python
基于python指定包的安装路径方法
2018/10/27 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
基于python实现删除指定文件类型
2020/07/21 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
美国家具网站:Cymax
2016/09/17 全球购物
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
护理毕业生自荐信范文
2013/12/22 职场文书
简单租房协议书
2014/10/21 职场文书
2014年售票员工作总结
2014/11/19 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
网吧员工管理制度
2015/08/05 职场文书
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技