1. 匿名函数
Lambda表达式基础
-
语法:lambda 参数: 表达式
-
特点:
- 没有函数名,适合简单逻辑
- 函数体只能是单行表达式
- 自动返回表达式结果
# 示例1:加法
add = lambda a, b: a + b
print(add(3, 5)) # 输出 8
# 示例2:字符串处理
replace_lambda = lambda s: s.replace("Python", "Java")
print(replace_lambda("Python is awesome!")) # 输出 "Java is awesome!"
三元运算与Lambda结合
# 根据数字奇偶性返回描述
func = lambda x: "偶数" if x % 2 == 0 else "奇数"
print(func(7)) # 输出 "奇数"
限制与注意事项
- 无法处理多行逻辑(需用普通函数)
- 可读性较差,复杂逻辑慎用
2. 生成器
生成器函数
-
使用yield关键字定义生成器函数
-
执行特点:
- 调用生成器函数返回生成器对象
- 通过next()或循环逐步执行
- 每次yield暂停,下次从暂停处继续
def count_down(n):
while n > 0:
yield n
n -= 1
gen = count_down(3)
print(next(gen)) # 3
print(next(gen)) # 2
生成器表达式
- 语法类似列表推导式,使用()
- 惰性求值,节省内存
gen_exp = (x**2 for x in range(5))
print(list(gen_exp)) # [0, 1, 4, 9, 16]
应用场景
- 处理大规模数据(如文件逐行读取)
- 无限序列生成(如斐波那契数列)