关于python:Reyield一台发电机

Reyield a generator

我会这样做:

1
2
3
4
5
6
7
def walk(samples):
    for d in range(samples):
        yield d

def walk200():
    for d in walk(200):
        yield d

但实际上,我想要的是缩短代码:

1
2
def walk200():
    reyield walk(200)

我该怎么做reyield


python 3.3及更高版本:

1
2
def walk200():
    yield from walk(200)

对于较低的版本,您必须遵守您发布的代码。


在您的特定示例中,您可以简单地使用return walk(200),这将在所有Python版本中都有效。yield from仅在某些情况下是必要的。