python中生成器yield
def yield_demo():
for x in range(3):
yield x
print("生成器后一行代码")
a = yield_demo()
print(a) #这里的a是一个生成器对象
可以用for循环来遍历生成器对象里的元素
for i in a:
print(i)
那么yield的工作过程是怎么样的呢?
可以通过
print(a.__next__())来一步一步显示yield的过程
可以发现,yield首先是返回某一个对象,并且yield会向指针一样指向yield之后的地址,但不执行,直到下次调用yield才开始从yield指向的地址开始执行。也就是说,程序中,yield会返回对象,但返回后就停在这里,直到下次再次调用yield对象中的元素。
函数中,yield可以同时存在多个,只要遇到yield就返回并停止在这里。