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中的条件判断语句基础学习教程
Feb 07 Python
python使用Apriori算法进行关联性解析
Dec 21 Python
pandas表连接 索引上的合并方法
Jun 08 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
Django forms表单 select下拉框的传值实例
Jul 19 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
Feb 22 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 Python
教你怎么用python selenium实现自动化测试
May 27 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 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
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
使用console进行性能测试
2015/04/27 Javascript
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
[01:20]PWL开团时刻DAY9——听说潮汐没用?
2020/11/10 DOTA
Python验证码识别的方法
2015/07/10 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
宿舍打麻将检讨书
2014/01/24 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
学生病假条范文
2015/08/17 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL