是的,您可以这样做:
def infinity(start): yield start for x in infinity(start + 1): yield x
但是,一旦达到最大递归深度,这将出错。
从Python 3.3开始,您将可以使用
def infinity(start): yield start yield from infinity(start + 1)
如果您只是递归地调用生成器函数而不循环或生成
yield from它,那么您要做的就是构建一个新的生成器,而无需实际运行函数主体或产生任何结果。
有关更多详细信息,请参见PEP 380。



