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就返回并停止在这里。

posted @ 2019-12-26 13:57  老方学编程  阅读(411)  评论(0编辑  收藏  举报