-
yield 关键字允许我们一次性处理大量数据时,避免一次性将所有资源都加载到内存中。
-
使用 yield,我们可以按需生成数据,每次调用生成器函数时返回一个值,就像排队取号一样。这样,我们可以逐步处理数据,而不是一次性获取所有数据。
-
yield 类似于 return,会返回一个值。但不同的是,yield 会记住函数执行到的位置。下一次迭代时,从上次 yield 的位置继续执行。
-
第一次调用时必须先next()或send(None),否则会报错。
-
yield作为send接收器
-
send可以强行修改上一个yield表达式值
def crawl():
url = 0
for i in range(100):
res = yield url
print('接收到了:',res)
print('生成了一个url:',url)
url+=1
res = crawl()
print(res)
print(next(res))
print(next(res))
print(res.send(4565))
print(res.send(7899))