一、生成器进阶
先看示例:
def generator(): print(123) yield 'a' print(456) yield 'b' print(789) g = generator() print(next(g)) print("-------我是分割线-------") print(next(g)) print("-------我是分割线-------") print(next(g)) print("-------我是分割线-------")
得到的结果:
上述示例中,生成器函数generator中在最后一个yield后面还有代码,在取完最后一个值后再次执行next(),可以看到后面的“789”依然输出了,但是函数执行完还是找不到下一个yield,就报错了。
同样的,for循环取值也是可以将生成器执行完的,for循环也是以报错结束,只有在函数找不到最后一个yield的时候才会报错。