yield 浅析
先来一段代码:
def fun1():
for i in range(5):
yield i
print("继续调用继续执行")
gen1 = fun1()
print(gen1)
for i in gen1:
print(i)
"""# 执行结果:
<generator object fun1 at 0x0365DEB0>
0
继续调用继续执行
1
继续调用继续执行
2
继续调用继续执行
3
继续调用继续执行
4
继续调用继续执行
"""
直接得到结果
- yield存在于函数体中, 用于返回生成器对象, 使用了yield的函数就叫做生成器.
- 迭代生成器对象时, 每迭代一次便返回函数体继续执行, 直到没有结果为止
- 另外有
next(迭代对象[, 默认参数])
可用于迭代生成器对象, 但每次只会得到一次结果, 多次迭代可得到全部结果, 结束时会返回异常[或默认参数].