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中stdout输出不缓存的设置方法
May 29 Python
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 Python
Python的randrange()方法使用教程
May 15 Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 Python
django表单实现下拉框的示例讲解
May 29 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
python字典的遍历3种方法详解
Aug 10 Python
django创建超级用户过程解析
Sep 18 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
python基于pexpect库自动获取日志信息
Feb 01 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
php实现统计邮件大小的方法
2013/08/06 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
jQuery实现淡入淡出的模态框
2017/02/09 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
Vue watch响应数据实现方法解析
2020/07/10 Javascript
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
一道Delphi面试题
2016/10/28 面试题
统计系教授推荐信
2014/02/28 职场文书
大学生就业意向书范文
2014/04/01 职场文书
安全协议书范本
2014/04/21 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
婚前协议书范本
2014/10/27 职场文书
刑事和解协议书范本
2014/11/19 职场文书
房屋产权证明书
2015/06/19 职场文书
周一问候语大全
2015/11/10 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python
Pandas数据类型之category的用法
2021/06/28 Python