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中使用PIPE操作Linux管道
Feb 04 Python
对于Python中线程问题的简单讲解
Apr 03 Python
Python的Django框架中从url中捕捉文本的方法
Jul 20 Python
Python的Flask框架中的Jinja2模板引擎学习教程
Jun 30 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
python中模块查找的原理与方法详解
Aug 11 Python
python实现汽车管理系统
Nov 30 Python
Python程序暂停的正常处理方法
Nov 07 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
如何将 awk 脚本移植到 Python
Dec 09 Python
Python为何不支持switch语句原理详解
Oct 21 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
Oct 30 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/06/11 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
PHP count()函数讲解
2019/02/03 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
js停止输出代码
2008/07/20 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
最全的Javascript编码规范(推荐)
2016/06/22 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
python实现隐马尔科夫模型HMM
2018/03/25 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
对Python生成器、装饰器、递归的使用详解
2019/07/19 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
python实现文件的分割与合并
2019/08/29 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
Python基于当前时间批量创建文件
2020/05/07 Python
文明班集体申报材料
2014/05/23 职场文书
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
60句有关成长的名言
2019/09/04 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL