python基础——匿名函数
匿名函数
- 通过 lambda 表达式创建,一个没有名的函数
lambda a, b: a + b
和普通函数的区别(只在创建时有区别):
- 1. 使用 lambda 关键字,而不是 def 创建
- 2. 创建时:不需要指定名字,不需要指定返回值
- 3. 不可以包含注释
- 4. 不允许有换行(不可以包含语句块)
- 5. 整个表达式,只有参数和返回值2个部分。
add = lambda a, b: a + b # 给匿名函数一个名字 ,和普通函数没有区别 print(add(1, 1))
两种不同的调用方式:
# 方式一 sum = lambda arg1, arg2: arg1 + arg2 # 调用sum函数 print("相加后的值为 : ", sum(10, 20)) # 方式二 l = (lambda arg1, arg2: arg1 + arg2)(10, 20) print("相加后的值为 : ", l)
难点是什么?
1. 定义函数时,创建作用域
2. 当匿名函数出现在函数中的时候,创建闭包作用域
错把闭包的问题,当作匿名函数的问题
def f(*args): l = [] for arg in args: l.append((lambda: arg + 1)()) #调用lambda函数 return l print(f(1, 2, 3, 4, 5))
[2, 3, 4, 5, 6]
def f(*args): l = [] for arg in args: l.append((lambda: arg + 1)) #未调用 print(f'{arg=}') #闭包作用域,最后一次循环时的值 return l l=f(1, 2, 3, 4, 5) #在外部调用 print(l) for i in l: print(i())
arg=5
[<function f.<locals>.<lambda> at 0x000002B4591FDEA0>, <function f.<locals>.<lambda> at 0x000002B4591FDF30>, <function f.<locals>.<lambda> at 0x000002B4591FDFC0>, <function f.<locals>.<lambda> at 0x000002B4591FE050>, <function f.<locals>.<lambda> at 0x000002B4591FE0E0>]
6
6
6
6
6
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!