@概述
下面是一个简单的生成器函数:
# 一个简单的生成器函数
# 间断性地生成(“返回”)一个又一个的值
# 每生成一次,就将CPU执行权让出,直到外界next(generator)
def myGenerator():
mlist = [1, 2, 3]
# 一次性地返回内容,函数结束
# return mlist[0],mlist[1]
# 生成:每次“返回”一部分,分多次完成全部“返回”
for item in mlist:
print("yield %d..." % (item))
yield item # 完成一次生成后,函数并未结束,但CPU执行权被让出,直到下一次的数据请求发生
# 外界下一次提出数据请求时,才会执行到这里
print("yield ok!")
在外界分批次地向生成器函数索取数据:
mg = myGenerator()
# print(type(mg)) #
while True:
try:
print("give me one")
# 分批次向生成器索取数据
item = next(mg)
print("-----item=%d-----\n" % (item))
time.sleep(3)
# 像迭代器一样捕获迭代停止异常
except StopIteration:
break