|
生成器(Generator)是 Python 中一种特殊的迭代器,可以**按需生成值**(而不是一次性生成所有值),极大节省内存。它的核心是 yield 关键字。
### 生成器的特点:
1. **惰性计算**:调用时生成一个值后暂停,下次从暂停处继续
2. **节省内存**:适合处理海量数据
3. **只能遍历一次**:遍历结束后不能再使用
---
### 示例:结合 random 模块
假设要生成 5 个随机数,但不想一次性存到列表中:
- import random
- def random_generator(count):
- for _ in range(count):
- # 每次生成一个随机数后暂停
- yield random.randint(1, 100)
- # 创建生成器对象(此时并未计算)
- gen = random_generator(5)
- # 按需取值
- print(next(gen)) # 输出第1个随机数
- print(next(gen)) # 输出第2个随机数
- # 用循环取剩余值
- for num in gen:
- print(num) # 输出剩余3个
复制代码
---
### 关键点:
1. 函数中出现 yield 就变成了生成器
2. 调用生成器函数返回生成器对象(如 gen)
3. 用 next() 或循环触发执行
---
### 对比普通函数:
普通函数 | 生成器
---|---
用 return 返回结果 | 用 yield 暂停并返回值
一次性返回所有结果 | 每次只产出一个值
立即执行全部计算 | 调用 next() 时才执行
当看到代码中出现 yield 时,基本可以确定这是生成器!它特别适合处理流式数据或无限序列(如持续读取传感器数据)。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|