1. 什么是生成器?
生成器是一个包含了yeild语句的函数。funcA=generatorA(), 那么funcA就是一个generator object.
def generatorA():
print 'start'
yeild 'Do something'
print 'end'
2. 如何调用生成器 & generator和iterator的关系?
一个generator object具有iterator的全部功能,所以对他的调用方式有两种:
方式一:
funcA.next()
方式二:
for i in funcA:
print i
3. 生成器的运行机制?
当你问生成器要一个数时,生成器会执行,直至出现 yield 语句,生成器把 yield后面 的值给你,之后生成器就不会往下继续运行。
当你问他要下一个数时,他会从上次的状态开始运行,直至再次出现yield语句,把后面的值给你,之后停下。如此反复直至退出函数。