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实现全局变量的两个解决方法
Jul 03 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
Oct 23 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
Python中使用不同编码读写txt文件详解
May 28 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
python中logging包的使用总结
Feb 28 Python
python3.4实现邮件发送功能
May 28 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
python指定写入文件时的编码格式方法
Jun 07 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
Keras 中Leaky ReLU等高级激活函数的用法
Jul 05 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分页函数完整实例代码
2014/09/22 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
医药营销专业个人自荐信
2013/09/29 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
2014全国两会心得体会
2014/03/17 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
教师工作失职检讨书
2014/09/18 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
导游词之太原天龙山
2020/01/02 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
Nginx配置https的实现
2021/11/27 Servers
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL