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根据文件大小打log日志
Oct 09 Python
简单的抓取淘宝图片的Python爬虫
Dec 25 Python
详解Python中的文本处理
Apr 11 Python
Python程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
详解Python文本操作相关模块
Jun 22 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
python+os根据文件名自动生成文本
Mar 21 Python
Django如何自定义model创建数据库索引的顺序
Jun 20 Python
Pycharm小白级简单使用教程
Jan 08 Python
python使用re模块爬取豆瓣Top250电影
Oct 20 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
json 实例详细说明教程
2009/10/31 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
wxPython之解决闪烁的问题
2018/01/15 Python
python opencv实现运动检测
2018/07/10 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
2014年党员公开承诺书范文
2014/03/28 职场文书
留守儿童工作方案
2014/06/02 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
作风整顿个人剖析材料
2014/10/06 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
地心历险记观后感
2015/06/15 职场文书
民主生活会主持词
2015/07/01 职场文书
跳高加油稿
2015/07/21 职场文书
企业法人任命书
2015/09/21 职场文书
PHP判断是否是json字符串
2021/04/01 PHP
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
python异常中else的实例用法
2021/06/15 Python