1、创建生成器方法1([ ]
to ( )
)
要创建一个生成器,有很多种方法。第一种方法很简单,只要把一个列表生成式的 [ ]
改成 ( )
2、创建生成器方法2(yield)
定义generator的另一种方法:如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。此时按照调用函数的方式( 案例中为F = fib() )使用生成器就不再是执行函数体了,而是会返回一个生成器对象( 案例中为F ),然后就可以按照使用迭代器的方式来使用生成器了。
generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
def fib():
current = 0
num1, num2 = 0, 1
while True:
num = num1
num1, num2 = num2, num1 + num2
current += 1
yield num
F = fib()
for i in range(100):
print(next(F))