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 实现文件的递归拷贝实现代码
Aug 02 Python
python的id()函数解密过程
Dec 25 Python
Python自动化构建工具scons使用入门笔记
Mar 10 Python
python中反射用法实例
Mar 27 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
Python操作mongodb数据库进行模糊查询操作示例
Jun 09 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
keras中的backend.clip用法
May 22 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
代码复现python目标检测yolo3详解预测
May 06 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
php5 pdo新改动加载注意事项
2008/09/11 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
用javascript实现画板的代码
2007/09/05 Javascript
Javascript typeof 用法
2008/12/28 Javascript
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
利用Python如何生成随机密码
2016/04/20 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
博士生入学考试推荐信
2013/11/17 职场文书
土木工程专业个人求职信
2013/12/05 职场文书
2014自荐信的写作技巧
2014/01/28 职场文书
校园安全检查制度
2014/02/03 职场文书
初级职称评定工作总结
2015/08/13 职场文书