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函数的笔记整理
Apr 07 Python
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
Python利用pandas计算多个CSV文件数据值的实例
Apr 19 Python
pandas 对series和dataframe进行排序的实例
Jun 09 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
Jun 04 Python
python判断一个对象是否可迭代的例子
Jul 22 Python
Django获取该数据的上一条和下一条方法
Aug 12 Python
python实现按首字母分类查找功能
Oct 31 Python
python创建学生成绩管理系统
Nov 22 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
python实现控制台输出颜色
Mar 02 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中include()与require()的区别说明
2010/03/10 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
PDO::commit讲解
2019/01/27 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
PHP之header函数详解
2021/03/02 PHP
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
原生js实现轮播图
2017/02/27 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
Python跳出循环语句continue与break的区别
2014/08/25 Python
python字典基本操作实例分析
2015/07/11 Python
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
详解python中list的使用
2019/03/15 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
StubHub德国:购买和出售门票
2017/09/06 全球购物
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
纬创Java面试题笔试题
2014/10/02 面试题
学生处主任岗位职责
2013/12/01 职场文书
市场营销管理制度
2014/01/29 职场文书
先进工作者推荐材料
2014/12/23 职场文书
办公用品质量保证书
2015/05/11 职场文书
Python中super().__init__()测试以及理解
2021/12/06 Python