python匿名函数lambda

news/2025/1/11 10:07:29/

一、匿名函数的介绍和使用

在Python中,不通过def来声明函数名字,而是通过lambda关键字来定义的函数称为匿名函数
1.需要将一个函数对象作为参数来传递时,可以直接定义一个lambda函数(作为函数的参数或返回值)

2.要处理的业务符合lambda函数的情况(任意多个参数和一个返回值),并且只有一个地方会使用这个函数,不会在其他地方重用,可以使用lambda函数

二、常规函数和匿名函数的对比

# 常规的语法
def add(a, b):return a + bres = add(11, 22)
print(res)# 匿名函数的语法 :lambda 参数: 返回值
# 适用于函数结构体非常简单的函数定义
add2 = lambda a, b: a + b
res2 = add2(33, 44)
print(res2)

运行结果:

33
77

三、匿名函数的多种表达形式:

# 无参数
lambda1 = lambda: 60
print(lambda1())# 一个参数
lambda2 = lambda num: num * 100
print(lambda2(5))# 多个参数
lambda3 = lambda a, b, c, d: a + b + c + d
print(lambda3(2, 4, 6, 8))# 表达式分支
lambda4 = lambda x: x if x % 2 == 0 else x + 6
print(lambda4(6))
print(lambda4(7))

运行结果

60
500
20
6
13

四、lambda可以作为一个参数传递

# python作为一个参数传递
def sub_func(a, b, func):print( func(a, b))sub_func(168, 178, lambda a, b: a + b)

运行结果

346

五、可以与python内置函数使用

li1 = [[11, 2], [1, 21], [93, 7], [87, 0], [23, 6]]
li1.sort(key=lambda x: x[0])
print(li1)li1.sort(key=lambda x: x[1])
print(li1)li = [{"name": "musen", 'age': 18, 'height': 155},{"name": "musen", 'age': 17, 'height': 178},{"name": "musen", 'age': 30, 'height': 175},{"name": "musen", 'age': 50, 'height': 185},
]
# 根据列表中每个数据的age值大小进行排序
li.sort(key=lambda x: x['age'])
print(li)
lista = [23, 43, 68, 32, 46, 58]
res = list(map(lambda x: {str(x): x}, lista))
print(res)

运行结果

[[1, 21], [11, 2], [23, 6], [87, 0], [93, 7]]
[[87, 0], [11, 2], [23, 6], [93, 7], [1, 21]]
[{'name': 'musen', 'age': 17, 'height': 178}, {'name': 'musen', 'age': 18, 'height': 155}, {'name': 'musen', 'age': 30, 'height': 175}, {'name': 'musen', 'age': 50, 'height': 185}]
[{'23': 23}, {'43': 43}, {'68': 68}, {'32': 32}, {'46': 46}, {'58': 58}]

六、lambda作为函数的返回值

def run_func(a, b):return lambda c: a - b - c
return_func = run_func(100, 20)
print(return_func)
print(return_func(10))

其中的a,b两个参数是run_func中的参数,但我们执行返回的函数return_func时,已经不在run_func的作用域内了,而lambda函数仍然能使用a,b参数。说明lambda函数会将它的运行环境保存一份,一直保留到它自己执行的时候使用。
运行结果:

<function run_func.<locals>.<lambda> at 0x000002B8D975F940>
70

http://www.ppmy.cn/news/335882.html

相关文章

python什么是鸭子类型

一、鸭子类型 鸭子类型&#xff08;英语&#xff1a;duck typing&#xff09;是动态类型的一种风格。在这种风格中&#xff0c;一个对象有效的语义&#xff0c;不是由继承自特定的类或实现特定的接口&#xff0c;而是由当前方法和属性的集合决定 “当看到一只鸟走起来像鸭子、…

杰森斯坦森是机器人_杰森·斯坦森站台的品牌 赛麟究竟是什么

作者&#xff1a; johnny 2019-07-22/17:58 驱动中国2019年7月22日消息 近日&#xff0c;赛麟(SALEEN)在北京国家体育场鸟巢举办了一个发布会&#xff0c;国际影星杰森斯坦森到场站台&#xff0c;很多人就有疑问了&#xff0c;赛麟是个什么牌子&#xff0c;没听说过啊&#x…

python列表推导式练习

python列表推导式练习总结&#xff1a; 问题一 如何快速生成一个列表 [“data0”,“data1”,“data2”,“data3”,…,“data99”,] 问题二 如何快速生成一个列表[“data0”,“gy1”,“data2”,“gy3”,…,“data98”,“gy99”] 列表以下方法总结如代码&#xff1a; "&quo…

python常用的内置函数filter、map、eval、exec、all、all

python常用的内置函数 目录 一、filter 过滤函数二、map函数三、eval函数四、exec函数五、all函数六、 any函数 一、filter 过滤函数 filter()函数用于过滤序列&#xff0c;过滤掉不符合条件的元素&#xff0c;返回符合条件的元素组成新列表 # 实例1 取出列表中大于10的数 l…

测试开发面试题总结

测试开发面试题 1. 通过列表推导式完成下面数据类型转换。将 ["{‘a’:11,‘b’:2}", “[11,22,33,44]”] 转换为以下格式&#xff1a; li1 [{‘a’: 11, ‘b’: 2}, [11, 22, 33, 44]]2. Names[python,java,php,c,c,django,unittest,pytest,pymysql],请通过列表推导…

python搭建图书管理系统

一、项目介绍&#xff1a; 图书管理系统&#xff1a; 1.功能模块&#xff1a; 2.图书信息 二、环境准备 1.数据库的存储方式&#xff1a;mysql 2.通过云服务器安装一个mysql数据库&#xff0c;可参考博客 安装mysql数据库 3.登录数据库&#xff0c;创建一个表 create tab…

python的单例模式详解

一、什么是单例模式 单例模式&#xff08;Singleton Pattern&#xff09;是一种常用的软件设计模式&#xff0c;该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中&#xff0c;某个类只能出现一个实例时&#xff0c;单例对象就能派上用场 比如&#xff0…

BMW Series3/5/7

3-Series 第一代&#xff0c;E21&#xff0c;1975。有些许粗糙&#xff0c;过于简单。 第二代&#xff0c;E30&#xff0c;1984。最喜欢的一代&#xff0c;外观新颖大气。 第三代&#xff0c;E36&#xff0c;1991。外观开始变得有些现代了&#xff0c;介于复古和现代之间的产物…