python基础之匿名函数详解


Posted in Python onApril 21, 2021

1.匿名函数介绍

匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。

在python中,不通过def来声明函数名字,而是通过 lambda 关键字来定义的函数称为匿名函数。

lambda函数能接收任何数量(可以是0个)的参数,但只能返回一个表达式的值,lambda函数是一个函数对象,直接赋值给一个变量,这个变量就成了一个函数对象。

2.语法

lambda 参数:表达式

3.使用场景

(1)需要将一个函数对象作为参数来传递时,可以直接定义一个lambda函数(作为函数的参数或是返回值)

(2)要处理的业务符合 lambda 函数的情况(任意多个参数和一个返回值),并且只有一个地方会使用这个函数,不会在其他地方重用,可以使用lambda函数

4.匿名函数和普通函数的对比

def sum_func(a, b, c):
    return a + b + c
# 将匿名函数对象赋值给 sum_lambda
sum_lambda = lambda a, b, c: a + b + c
print(sum_func(1, 2, 3))  # 6
print(sum_lambda(1, 2, 3))  # 6

5.匿名函数的多种形式

# 无参数
lambda_a = lambda :100
print(lambda_a())  # 100
 
# 一个参数
lambda_b = lambda num: num * 10
print(lambda_b(1))  # 10
 
# 多个参数
lambda_c = lambda a, b, c: a + b + c
print(lambda_c(1, 10, 100))  # 111
 
# 表达式分支
lambda_d = lambda x: x if x > 5 else x + 1
print(lambda_d(4))  # 5
print(lambda_d(6))  # 6

6.lambda 作为一个参数传递

def sub_func(a, b, func):
    print("a = ", a)
    print("b = ", b)
    print("a - b = ", func(a, b))
sub_func(3, 2, lambda a, b: a - b)
# 结果:
#     a =  3
#     b =  2
#     a - b =  1

7. lambda函数与python内置函数配合使用

sorted是Python中对列表排序的内置函数,我们使用lambda来获取排序的key

member_list = [
    {"price": 9},
    {"price": 999},
    {"price": 99}
]
new_list = sorted(member_list, key=lambda dict_: dict_["price"])
print(new_list)  #  [{'price': 9}, {'price': 99}, {'price': 999}]
number_list = [100, 77, 69, 31, 44, 56]
num_sum = list(map(lambda x: {str(x): x}, number_list))
print(num_sum)  # [{'100': 100}, {'77': 77}, {'69': 69}, {'31': 31}, {'44': 44}, {'56': 56}]

map是Python中用来做映射的一个内置函数,接收两个参数,第一个参数是一个函数,第二个参数是一个可迭代对象,map会遍历可迭代对象的值,然后将值依次传递给函数执行。我们使用lambda来实现map中的函数参数。

8.lambda 作为函数的返回值

def discount_func(discount):
    return lambda price: discount * price
 
p = discount_func(0.8)
print(p)  # <function discount_func.<locals>.<lambda> at 0x00000241352BAC10>
print(p(100))  # 80.0

 匿名函数可以作为一个函数的返回值,上面函数discount_func返回一个设定了折扣的匿名函数对象,调用这个对象,传入价格,就可以得到折扣后的价格

到此这篇关于python基础之匿名函数详解的文章就介绍到这了,更多相关python匿名函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python基础教程之Hello World!
Aug 29 Python
详解Python的Django框架中manage命令的使用与扩展
Apr 11 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
Python操作word常见方法示例【win32com与docx模块】
Jul 17 Python
使用pytorch进行图像的顺序读取方法
Jul 27 Python
python3实现名片管理系统
Nov 29 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
python3实现二叉树的遍历与递归算法解析(小结)
Jul 03 Python
Python 使用list和tuple+条件判断详解
Jul 30 Python
Python的几种主动结束程序方式
Nov 22 Python
使用python批量转换文件编码为UTF-8的实现
Apr 03 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
php+mysql实现无限分类实例详解
2015/01/15 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
php发送邮件的问题详解
2015/06/22 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
python 默认参数问题的陷阱
2016/02/29 Python
Django卸载之后重新安装的方法
2017/03/15 Python
django之session与分页(实例讲解)
2017/11/13 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
python多线程同步实例教程
2019/08/11 Python
python实现飞机大战项目
2020/03/11 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
IBatis持久层技术
2016/07/18 面试题
软件毕业生个人鉴定
2014/03/03 职场文书
企业文化口号
2014/06/12 职场文书
民间借贷协议书范本
2014/10/01 职场文书
专业见习报告范文
2014/11/03 职场文书
团日活动总结格式
2015/05/11 职场文书
家庭经济困难证明
2015/06/23 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
Python中递归以及递归遍历目录详解
2021/10/24 Python
linux下安装redis图文详细步骤
2021/12/04 Redis