生成器generator
一边循环一边计算的机制,称为生成器
1.直接生成generator
第一种方法很简单,只要把一个列表生成式的
[]
改成()
,就创建了一个generatorg = (x * x for x in range(10)) # g是一个object,所以可以使用for循环遍历
打印g时需要用到循环
for n in g:
print(n)
2.yield定义
第二个方法,一个函数定义中包含
yield
关键字,那么这个函数就不再是一个普通函数,而是一个generatordef fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
此函数变为生成器,输出了一个object,使用for循环遍历