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爬虫之爬虫编写全记录
Nov 06 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
Django基础三之视图函数的使用方法
Jul 18 Python
python字符串替换re.sub()方法解析
Sep 18 Python
在Keras中实现保存和加载权重及模型结构
Jun 15 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
详细分析Python collections工具库
Jul 16 Python
python 调用Google翻译接口的方法
Dec 09 Python
anaconda升级sklearn版本的实现方法
Feb 22 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
jquery创建div 实现代码
2009/04/27 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
用console.table()调试javascript
2014/09/04 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
python实现删除文件与目录的方法
2014/11/10 Python
Python中实现三目运算的方法
2015/06/21 Python
python中的错误处理
2016/04/10 Python
python django事务transaction源码分析详解
2017/03/17 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
python爬取淘宝商品销量信息
2018/11/16 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
百联网上商城:i百联
2017/01/28 全球购物
奥林匹克运动会口号
2014/06/19 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers