生成器也是一种迭代器,但是你只能对其迭代一次。这是因为它们并没有把所有的值存在内存中,而是在运行时生成值。你通过遍历来使用它们,要么用一个“for”循环,要么将它们传递给任意可以进行迭代的函数和结构。大多数时候生成器是以函数来实现的。然而,它们并不返回一个值,而是yield(暂且译作“生出”)一个值。这里有个生成器函数的简单例子:
def generator_function():
for i in range(10):
yield i
for item in generator_function():
print(item)运行结果:
D:\python3.6.1\python.exe F:/python_Advanced/generators.py
0
1
2
3
4
5
6
7
8
9
Process finished with exit code 0
这个案例并不是非常实用。生成器最佳应用场景是:你不想同一时间将所有计算出来的大量结果集分配到内存当中,特别是结果集里还包含循环。
本文介绍Python中的生成器概念,解释其作为一种特殊的迭代器如何仅在需要时生成值,而不是一次性生成所有值。通过一个简单的生成器函数示例,展示了如何在Python中创建和使用生成器。
163

被折叠的 条评论
为什么被折叠?



