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 相关文章推荐
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
详解Python中的序列化与反序列化的使用
Jun 30 Python
在Python的Django框架中加载模版的方法
Jul 16 Python
通过Python使用saltstack生成服务器资产清单
Mar 01 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
Django 自动生成api接口文档教程
Nov 19 Python
python文件处理fileinput使用方法详解
Jan 02 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 Python
python flask框架快速入门
May 14 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函数和特点
2013/08/08 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
php实现的http请求封装示例
2016/11/08 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
javascript比较文档位置
2008/04/08 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
python使用any判断一个对象是否为空的方法
2014/11/19 Python
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
金融管理应届生求职信
2014/02/20 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
单位工作证明范文
2014/09/14 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
师范生小学见习总结
2015/06/23 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
MySQL 存储过程的优缺点分析
2021/05/20 MySQL
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android