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如何判断数独是否合法
Sep 08 Python
python获取list下标及其值的简单方法
Sep 12 Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 Python
Python反转序列的方法实例分析
Mar 21 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
解决python给列表里添加字典时被最后一个覆盖的问题
Jan 21 Python
python实现自动解数独小程序
Jan 21 Python
PyQt5显示GIF图片的方法
Jun 17 Python
利用python实现PSO算法优化二元函数
Nov 13 Python
Python使用turtle库绘制小猪佩奇(实例代码)
Jan 16 Python
Django 404、500页面全局配置知识点详解
Mar 10 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
PHP导入Excel到MySQL的方法
2011/04/23 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
ExtJS下grid的一些属性说明
2009/12/13 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
深入理解node.js http模块
2018/01/24 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
Python聚类算法之DBSACN实例分析
2015/11/20 Python
python实现图片处理和特征提取详解
2017/11/13 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
Python如何急速下载第三方库详解
2020/11/02 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
日本面向世界,国际级的免税在线购物商城:DOKODEMO
2017/02/01 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
班级课外活动总结
2014/07/09 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
网吧员工管理制度
2015/08/05 职场文书
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫
python模板入门教程之flask Jinja
2022/04/11 Python