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 相关文章推荐
启动targetcli时遇到错误解决办法
Oct 26 Python
Python实现基本数据结构中栈的操作示例
Dec 04 Python
python 读入多行数据的实例
Apr 19 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
使用python socket分发大文件的实现方法
Jul 08 Python
Django框架ORM数据库操作实例详解
Nov 07 Python
python字符串反转的四种方法详解
Dec 02 Python
python3.x中安装web.py步骤方法
Jun 23 Python
pytorch SENet实现案例
Jun 24 Python
如何使用Python进行PDF图片识别OCR
Jan 22 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 Python
python实现web邮箱扫描的示例(附源码)
Mar 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 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
javascript 二分法(数组array)
2010/04/24 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
详解JavaScript的变量
2019/04/04 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
python发腾讯微博代码分享
2014/01/10 Python
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
python用户管理系统
2018/03/13 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
PYcharm 激活方法(推荐)
2020/03/23 Python
python中wheel的用法整理
2020/06/15 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
德国网上宠物店:Zoobio
2018/05/23 全球购物
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
高质量“欢迎词”
2019/04/03 职场文书
一文简单了解MySQL前缀索引
2022/04/03 MySQL