首页 > 技术文章 > 关于yield语法糖的运行时说明

yeni 2020-01-13 15:13 原文

yield只能定义在function中,用来返回一个generator。当知道函数将返回一组只需读取一次的巨大值时,它会很方便。来看下以下例子

def gen2():
    print('begin....')
    for x in range(2):
        print('aa')
        yield x
        print('bb')
        yield x+1
        print('cc')
    print('end....')

factory = gen2()

依次运行N次以下代码时,将输出什么内容?

next(factory)

第一次

begin..
aa
0

第二次

bb
1

第三次

cc
aa
1

第四次

bb
2

第五次之后
``
cc
end...
Traceback (most recent call last):

File "", line 1, in
next(factory)

StopIteration
``

总结:
当运行含有yield的generator时,每次迭代会在遇到一个yield时停止。

推荐阅读