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中的index()方法使用教程
May 18 Python
python控制台中实现进度条功能
Nov 10 Python
Python处理文本换行符实例代码
Feb 03 Python
深入浅析python 中的匿名函数
May 21 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
简单分析python的类变量、实例变量
Aug 23 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
如何基于python3和Vue实现AES数据加密
Mar 27 Python
在ipython notebook中使用argparse方式
Apr 20 Python
Django框架中模型的用法
Jun 10 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基于GD库的图像处理方法小结
2016/09/27 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
python集合类型用法分析
2015/04/08 Python
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
python操作mysql代码总结
2018/06/01 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
django model通过字典更新数据实例
2020/04/01 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
数据库面试要点基本概念
2013/10/31 面试题
《掌声》教学反思
2014/02/23 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
2015年教师新年寄语
2014/12/08 职场文书
跑吧孩子观后感
2015/06/10 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
java executor包参数处理功能 
2022/02/15 Java/Android