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中字符编码简介、方法及使用建议
Jan 08 Python
Python文档生成工具pydoc使用介绍
Jun 02 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
Oct 07 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
Mar 22 Python
Python  Django 母版和继承解析
Aug 09 Python
Python流程控制 while循环实现解析
Sep 02 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
利用python调用摄像头的实例分析
Jun 07 Python
Python基础之字符串格式化详解
Apr 21 #Python
python 自动刷新网页的两种方法
python实现Thrift服务端的方法
python基础之while循环语句的使用
看看如何用Python绘制小米新版天价logo
基于python制作简易版学生信息管理系统
基于python的matplotlib制作双Y轴图
You might like
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
javascript innerText和innerHtml应用
2010/01/28 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
中止javascript执行的方法
2014/02/14 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
利用Python演示数型数据结构的教程
2015/04/03 Python
Python fileinput模块使用实例
2015/05/28 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
深入理解Django的自定义过滤器
2017/10/17 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
matplotlib实现区域颜色填充
2019/03/18 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
C#面试问题
2016/07/29 面试题
事业单位个人应聘自荐信
2013/09/21 职场文书
正规的求职信范文分享
2013/12/11 职场文书
医药个人求职信范文
2014/01/29 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
打架检讨书范文
2015/01/27 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP