yield <—–> 生成器
包含yield语句的函数是一个生成器
生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值
生成器是一个不断产生值的函数
实例
>>>def gen(n):
for i in range(n):
yield i**2
>>>for i in gen(5):
print(i," ",end = "")
0 1 4 9 16
生成器每调用一次在yield位置产生一个值,直到函数执行结束
为何要用生成器:
上面例子中如果n很大,列表方式会把所有的数存储起来,会占用很多空间,操作时间会很慢.
生成器相比一次列出所有内容的优势:
(1)更节省存储空间
(2)相应更迅速
(3)使用更灵活