生成器的介绍
根据规则循环生成数据,当条件不成立则生成数据结束,数据不是一次性全部生成出来,而是使用一个生成一个,可以节省大量内存.
创建生成器的方式
1.生成器推导式
2.yield关键字
生成器推导式与列表推导式类似只不过生成器推导式使用小括号
my_generator=(i * 10 for i in range(5))
print(my_generator)
# next获取生成器当下一个值
value=next(my_generator)
print(value)
# 遍历生成器
for value in my_generator:
print(value)
next函数获取生成器中的下一个值
for循环遍历生成器中的每一个值
yield关键字
只要在def函数里看到有yield关键字就是生成器
def def mygenerator(n):
for i in range(n):
print('开始生成')
yield i
print('完成一次')
if __name__ == '__main__':
g=mygenerator(2)
#result=next(g)
#print(result)
for i in g:
print(i)
代码说明:
1.代码指定到yield会暂停,然后把结果返回去,下次启动生成器会在暂停的位置继续往下执行.
2.生成器如果把数据生成完成,再次获取生成器中的下一个数据会抛出Stoplteration异常,表示停止迭代异常
3.while循环内部没有处理异常操作,需要手动添加处理异常操作
4.for循环内部自动处理了停止迭代异常,使用起来更加方便