Python3匿名函数lambda介绍与使用示例


Posted in Python onMay 18, 2019

概述

匿名函数,顾名思义即没有名称的函数,和def定义的函数的最大区别在于匿名函数创建后返回函数本身(即匿名函数不需要return来返回值),表达式本身结果就是返回值,而def创建后则赋值给一个变量名,在Python中,我们利用关键词lambda创建匿名函数,以下是匿名函数lambda表达式的形式:

lambda arg1,arg2,.....argn:expression

以下为一些lambda的特点:

  • lambda 是一个表达式,而不是一个语句,即我们可以在任何可以使用表达式的场景一样使用lambda。
  • lambda 的主体也是一个表达式,即和def定义的函数一样,lambda也有函数主体,不过lambda的主体仅仅是一个表达式,所以其使用的功能受到较大的限制。

lambda使用

无参匿名函数

# 可以将lambda直接传递给一个变量,像调用一般函数一样使用
B = lambda :True
print(B())

# 等价于
def BF():
 return True
print(BF())

示例结果:

True
True

有参匿名函数

支持多个参数

参数无默认值

two_sum = lambda x, y: x + y
# 等同于:
def two_sum(x, y): return x + y
print(two_sum(1,2))

示例结果:

3

参数带默认值

sum_with_100 = lambda x, y=100: x + y
# 等同于:
def sum_with_100(x, y=100): return x + y
print(sum_with_100(200))

示例结果:

300

从后面传参

之前的示例我们将lambda匿名函数赋值一个变量,通过类似def定义的函数的方式传参,我们可以在lambda后面直接传递参数:

two_sum = (lambda x, y: x + y)(3, 4)
print(two_sum)

示例结果:

7

嵌套使用

将lambda嵌套到普通函数中,lambda函数本身做为return的值,构建简单的闭包

def sum(x):
 return lambda y: x + y
sum_with_100 = sum(100)
result = sum_with_100(200)
print(result)

示例结果:

300

一些使用实例

1. 结合三元表达式求两值中最小值

lower = lambda x,y: x if x<y else y
print(lower(7,100))

实例结果:

7

2. 对字典某一键值进行排序

d = [{"order":3},{"order":1},{"order":2}]
# 根据order键值排序
d.sort(key=lambda x:x['order']) 
print(d)

实例结果

[{'order': 1}, {'order': 2}, {'order': 3}]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
bpython 功能强大的Python shell
Feb 16 Python
深入浅析python定时杀进程
Jun 06 Python
Python爬取京东的商品分类与链接
Aug 26 Python
Python命令启动Web服务器实例详解
Feb 23 Python
python中利用h5py模块读取h5文件中的主键方法
Jun 05 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
如何通过python画loss曲线的方法
Jun 26 Python
python把转列表为集合的方法
Jun 28 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
django连接oracle时setting 配置方法
Aug 29 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 #Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 #Python
python的内存管理和垃圾回收机制详解
May 18 #Python
Django处理多用户类型的方法介绍
May 18 #Python
Django 配置多站点多域名的实现步骤
May 17 #Python
将Python字符串生成PDF的实例代码详解
May 17 #Python
Python Django框架单元测试之文件上传测试示例
May 17 #Python
You might like
网站加速 PHP 缓冲的免费实现方法
2006/10/09 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
jQuery ztree实现动态树形多选菜单
2016/08/12 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
JS数组操作中的经典算法实例讲解
2017/07/26 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
python多线程实现TCP服务端
2019/09/03 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
丑小鸭教学反思
2014/02/03 职场文书
红色影片观后感
2015/06/18 职场文书
师范生见习自我总结
2015/06/23 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
高三数学教学反思
2016/02/18 职场文书
演讲开头怎么书写?
2019/08/06 职场文书