擅长:python、mysql、java
<p><code>return</code>结束函数。所以循环只执行一次,因为您在循环中<code>return</code>。想想看:一旦返回第一个值,调用者将如何获得后续值?他们需要再次调用函数吗?但那会重新开始。Python应该等到循环完成后立即返回所有值吗?但是他们会去哪里,Python怎么知道去做呢?你知道吗</p>
<p>您可以通过<code>yield</code>而不是<code>return</code>在这里提供生成器。您也可以返回一个发电机:</p>
<pre><code>return (page['title'] for page in pages)
</code></pre>
<p>无论哪种方式,调用方都可以根据需要将其转换为列表,或者直接对其进行迭代:</p>
<pre><code>titles = list(recentchanges())
# or
for title in recentchanges():
print title
</code></pre>
<p>或者,您也可以返回标题列表:</p>
<pre><code>return [page['title'] for page in pages]
</code></pre>