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连接mysql并提交mysql事务示例
Mar 05 Python
跟老齐学Python之集合(set)
Sep 24 Python
python Django批量导入数据
Mar 25 Python
Python编程对列表中字典元素进行排序的方法详解
May 26 Python
python 移除字符串尾部的数字方法
Jul 17 Python
使用python进行波形及频谱绘制的方法
Jun 17 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
在Python中实现字典反转案例
Dec 05 Python
python读取mat文件生成h5文件的实现
Jul 15 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
深入理解curl类,可用于模拟get,post和curl下载
2013/06/08 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
Javascript 类型转换方法
2010/10/24 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
JS表的模拟方法
2015/02/05 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
JS实现拼图游戏
2021/01/29 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
简单介绍Python中的try和finally和with方法
2015/05/05 Python
Python中的默认参数详解
2015/06/24 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
Keras设置以及获取权重的实现
2020/06/19 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
初一家长会邀请函
2014/01/31 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
社区健康教育工作方案
2014/06/03 职场文书
mysql 获取相邻数据项
2022/05/11 MySQL