擅长:python、mysql、java
<p>使用<code>yield</code>使函数成为<a href="https://docs.python.org/2/reference/expressions.html#yieldexpr" rel="nofollow">generator function</a>,这意味着每次调用它的(自动创建的)<code>next()</code>方法时,它都将生成一系列值。在</p>
<p>当您希望迭代地处理事情时,这很有用,因为这意味着您不必将所有结果保存在一个容器中,然后再处理它们。此外,在生成值之前所需的任何准备工作都只需完成一次,因为所创建的生成器将在最后一次遇到<code>yield</code>之后继续执行代码,也就是说,它有效地将其转换为<a href="https://en.wikipedia.org/wiki/Coroutine" rel="nofollow">coroutine</a>。在</p>
<p>生成器函数在<code>return</code>值而不是<code>yield</code>时退出。这通常发生在执行“结束”时,而默认情况下它将<code>return None</code>。在</p>
<p>从代码的外观来看,我认为使用yield是有好处的,特别是如果可以增量处理结果的话。另一种选择是让它将所有值存储在一个容器中,比如完成时的<code>list</code>和{<cd4>}。在</p>