生成器
生成器generator
<ul>
<li>
生成器指的是生成器对象,可以由生成器表达式得到,也可以使用yield关键字得到一个生成器函数,调用这个函数得到一个生成器对象
</li>
</ul>
</li>
<li>
生成器函数
<ul>
<li>
函数体中包含yield语句的函数,返回生成器对象
</li>
<li>
生成器对象,是一个可迭代对象,是一个迭代器
</li>
<li>
next(generator)会从函数的当前位置向后执行到之后碰到的第一个yield语句,会弹出值,并暂停函数执行
</li>
<li>
没有多余的yield语句能被执行,继续调用next函数,会抛出StopIteration
</li>
<li>
生成器对象,是延迟计算,惰性求值
</li>
</ul>
</li>
先来对比下生成器表达式和生成器函数
在生成器函数中,使用多个yield语句,执行一次后会暂停执行,把yield表达式的值返回,再次执行会执行到下一个yield语句
下面看一些简单的关于生成器的应用
这是一个无限循环的函数,每调用一次,就返回一个自加的值