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常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
Aug 25 Python
使用python加密自己的密码
Aug 04 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
详解Python 装饰器执行顺序迷思
Aug 08 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
python logging模块书写日志以及日志分割详解
Jul 22 Python
Python实现图片识别加翻译功能
Dec 26 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
python help函数实例用法
Dec 06 Python
windows安装python超详细图文教程
May 21 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
初识PHP
2014/09/28 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
newxtree.js代码
2007/03/13 Javascript
更正确的asp冒泡排序
2007/05/24 Javascript
基于MooTools的很有创意的滚动条时钟动画
2010/11/14 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
简单谈谈python的反射机制
2016/06/28 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
Django model select的多种用法详解
2019/07/16 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
小学生元旦广播稿
2014/02/21 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
捐款通知怎么写
2015/04/24 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL