擅长:python、mysql、java
<p>是的,你可以这样做:</p>
<pre><code>def infinity(start):
yield start
for x in infinity(start + 1):
yield x
</code></pre>
<p>不过,一旦达到最大递归深度,就会出错。</p>
<p>从Python3.3开始,您将能够使用</p>
<pre><code>def infinity(start):
yield start
yield from infinity(start + 1)
</code></pre>
<p>如果只是递归地调用生成器函数而不在其上循环或<code>yield from</code>-调用它,那么所做的只是构建一个新的生成器,而不实际运行函数体或生成任何结果。</p>
<p>有关详细信息,请参见<a href="http://www.python.org/dev/peps/pep-0380/" rel="noreferrer">PEP 380</a>。</p>