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中enumerate函数代码解析
Oct 31 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
Python selenium使用autoIT上传附件过程详解
May 26 Python
Python如何实现FTP功能
May 28 Python
基于python 取余问题(%)详解
Jun 03 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 Python
深入理解python协程
Jun 15 Python
python 管理系统实现mysql交互的示例代码
Dec 06 Python
Python保存并浏览用户的历史记录
Apr 29 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
python 输出一个两行字符的变量
2009/02/05 Python
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
理解Python中函数的参数
2015/04/27 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
python如何实现代码检查
2019/06/28 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
奥巴马就职演讲稿
2014/05/15 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
情况说明书怎么写
2015/10/08 职场文书
Python实现生活常识解答机器人
2021/06/28 Python
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技