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 continue语句用法实例
Mar 11 Python
python非递归全排列实现方法
Apr 10 Python
Python实现自动上京东抢手机
Feb 06 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
Python Numpy数组扩展repeat和tile使用实例解析
Dec 09 Python
python绘制趋势图的示例
Sep 17 Python
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
Mar 29 Python
python生成可执行exe控制Microsip自动填写号码并拨打功能
Jun 21 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
如何隐藏你的.php文件
2007/01/04 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
python分割和拼接字符串
2013/11/01 Python
python与C互相调用的方法详解
2017/07/14 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
贝佳斯官方网站:Borghese
2020/05/08 全球购物
质检部岗位职责
2013/11/11 职场文书
迎接领导欢迎词
2014/01/11 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
法律专业自荐信
2014/06/03 职场文书
物流管理专业自荐信
2014/06/23 职场文书
开展创先争优活动总结
2014/08/28 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python