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中偏函数用法示例
Jun 07 Python
详解Python做一个名片管理系统
Mar 14 Python
django-allauth入门学习和使用详解
Jul 03 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
Python对接六大主流数据库(只需三步)
Jul 31 Python
python安装本地whl的实例步骤
Oct 12 Python
详解mac python+selenium+Chrome 简单案例
Nov 08 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 Python
用Python开发app后端有优势吗
Jun 29 Python
Python通过字典映射函数实现switch
Nov 06 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
python析构函数用法及注意事项
Jun 22 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
Php注入点构造代码
2008/06/14 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
js 表单验证方法(实用)
2009/04/28 Javascript
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
javascript实现类似java中getClass()得到对象类名的方法
2015/07/27 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
python调用cmd命令行制作刷博器
2014/01/13 Python
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
21行Python代码实现拼写检查器
2016/01/25 Python
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
详解python中init方法和随机数方法
2019/03/13 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
秘书英文求职信范文
2014/01/31 职场文书
银行金融服务方案
2014/06/11 职场文书
作风建设年活动总结
2014/08/27 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
服务器间如何实现文件共享
2022/05/20 Servers