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实现详解
Dec 15 Python
python中使用print输出中文的方法
Jul 16 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
Django之form组件自动校验数据实现
Jan 14 Python
Python通过文本和图片生成词云图
May 21 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
python中Ansible模块的Playbook的具体使用
May 28 Python
python如何建立全零数组
Jul 19 Python
python request 模块详细介绍
Nov 10 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 Python
python正则表达式re.search()的基本使用教程
May 21 Python
Pytorch 如何实现常用正则化
May 27 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
PHP 单引号与双引号的区别
2009/11/24 PHP
php实现websocket实时消息推送
2018/03/30 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
使图片旋转的3种解决方案
2013/11/21 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
2017/06/12 jQuery
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
javascript网页随机点名实现过程解析
2019/10/15 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
服务中心夜班服务员岗位职责
2013/11/27 职场文书
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
教师读书活动总结
2014/05/07 职场文书
医学求职信
2014/05/28 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
企业年检委托书范本
2014/10/14 职场文书
2014年党委工作总结
2014/11/22 职场文书
社区好人好事材料
2014/12/26 职场文书
经理岗位职责范本
2015/04/15 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
外出听课学习心得体会
2016/01/15 职场文书