python基础之匿名函数详解
作者:思想流浪者 发布时间:2021-08-23 12:15:18
标签:python,匿名函数,lambda
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返回一个设定了折扣的匿名函数对象,调用这个对象,传入价格,就可以得到折扣后的价格
来源:https://blog.csdn.net/qq_30346413/article/details/115314001


猜你喜欢
- MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两
- 上文中,我们一起学习了手把手教你实现一个 Python 计时器。本文中,云朵君将和大家一起了解什么是上下文管理器 和 Python
- python turtle自定义画布背景色turtle是python一个简单好用的绘图包,它可以通过设计坐标来实时控制绘图。安装很简单,一行
- PyQt5访问系统剪切板QClipboard类介绍QClipboard类提供了对系统剪切板的访问,可以在应用程序之间复制和粘贴数据,它的操作
- 即使在不太复杂的样式表中,也可能会有两个或者更多个规则找到同一元素。CSS通过一个叫做层叠(cascade)的过程处理这种冲突。
- “你如何为成千上万的用户和页面提供CSS?” 这是Nicole Sullivan在她的在丹佛的Web Directions North 大会
- 字符串格式化输出是python非常重要的基础语法,今天就把三种格式化输出做一个简单的总结,希望对大家有帮助。格式化输出:内容按照一定格式要求
- 阅读上一篇:交互设计模式(二)-Pagination(分页,标记页数) Tagging(标签)问题摘要用户往往想通过流行或最详尽的主题来浏览
- 我们都知道 Python 中else的基本用法是在条件控制语句中的 if...elif...else...,但是 else 还有两个其它的用
- 本文实例讲述了python安装cx_Oracle模块常见问题与解决方法。分享给大家供大家参考,具体如下:安装或使用cx_Oracle时,需要
- 语法:CREATE TRIGGER trigger_name trigger_time trigger_eventON tbl_name F
- 点击率预估模型0.前言本篇是一个基础机器学习入门篇文章,帮助我们熟悉机器学习中的神经网络结构与使用。日常中习惯于使用Python各种成熟的机
- 具体解决方案如下: 一、IE和FF下document.body对象的clientHeight,offsetHeight,scrollHeig
- 有时一些网页对源码进行了加密,我们很难找到类似像“onselectstart="return false"”这样的代码,
- 图片人脸识别import cv2filepath = "img/xingye-1.png"img = cv2.imrea
- 每天都要记得健康打卡尊敬的老师,我忘了这次的健康打卡,反思的时候我想了很多东西,反省了很多事情,自己也很懊悔,触犯了学校的规定,深刻认识到自
- 一、Pycharm 是什么?PyCharm是一种PythonIDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。二
- 我认为多选列表具有完美的功能——只需按下Ctrl键,同时点击鼠标从列表中选择多个项目。以下是一个典型的多选列表框: 上面那个列表框
- 一,extract方法的使用extract函数主要是对于数据进行提取。场景一般对于DataFrame中的一列中的数据进行提取的场合比较多。例
- 使用Vue实现简单的用户登录界面,登录成功以后查询账号用户类型进行相应的页面路由跳转,效果如下图所示:HTML部分:<div clas