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字符串加密解密的三种方法分享(base64 win32com)
Jan 19 Python
Python中偏函数用法示例
Jun 07 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
python使用phoenixdb操作hbase的方法示例
Feb 28 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
Django框架 查询Extra功能实现解析
Sep 04 Python
Python Opencv提取图片中某种颜色组成的图形的方法
Sep 19 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
openCV提取图像中的矩形区域
Jul 21 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 获取select下拉列表框的值
2010/05/08 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
JS DOM 操作实现代码
2010/08/01 Javascript
JS表的模拟方法
2015/02/05 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
vue实现购物车的监听
2020/04/20 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python使用SMTP发送qq或sina邮件
2017/10/21 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
详解django三种文件下载方式
2018/04/06 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
python实现kNN算法识别手写体数字的示例代码
2019/08/16 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
数据库专业英语
2012/11/30 面试题
行政助理工作职责范本
2014/03/04 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
英文导游词
2015/02/13 职场文书
2015年推普周活动总结
2015/03/27 职场文书
《叶问2》观后感
2015/06/15 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL