Python 相当于 F# 的产量!(产量爆炸)?

dev*_*ium 1 python python-3.x

假设我在 F# 中有以下代码:

let rec all_numbers_from k =
  yield k
  yield! all_numbers_from (k+1)
Run Code Online (Sandbox Code Playgroud)

这段代码可以称为all_numbers_from 0,生成从 0 到无穷大的所有数字。我知道 Python 也有一个yield关键字,它的行为似乎与 F# 的yield运算符非常相似。我的问题是是否还有某种等效于 F# 的yield!运算符?

che*_*ner 5

虽然yield from是您正在寻找的构造,但在 Python 中(共同)递归地定义此函数的效率非常低。使用迭代

def all_numbers_from(k):
    while True:
        yield k
        k = k + 1
Run Code Online (Sandbox Code Playgroud)

或者只是使用itertools.count(k).