什么是生成器(generator)¶
生成器是一个函数,允许你返回一个值, 然后”暂停”函数代码的执行,
生成器返回生成器迭代器的函数。它看起来像一个正常的函数,除了它包含了生成一系列 可用于for循环的值的yield表达式,或者可以一次使用next()函数检索一个值。
生成器是一个带yield 语句的函数。通常一个函数只返回一次,但一个生成器函数 能暂停执行并返回一个中间的结果—-那就是yield 语句的功能, 返回一个值给 调用者并暂停执行。当对生成器调用next()函数的时候,它会准确地从离开地方继续执行。
例如一个简单的生成器函数:
def gen(): # defines a generator function
yield 1
yield 3
yield 5
yield 7
g = gen()
print(type(g)) #生成器对象
print(next(g), next(g), next(g), next(g)) #依次是1, 3, 5, 7
for i in gen():
print(i)
#输出四行数据,依次是1,3,5,7
gen函数返回一个生成器对象,通常用于for in迭代使用,它可以迭代调用next()函数。
yield语句¶
yield语句仅用于定义一个生成器(generator)函数。 在函数定义中 使用yield就使该定义创建一个生成器函数,而不是一个正常的函数。
进一步阅读请参考 https://docs.python.org/3/reference/expressions.html#yield-expressions