重新生成发电机

时间:2017-09-14 09:32:00

标签: python generator

我会这样做:

def walk(samples):
    for d in range(samples):
        yield d

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

但实际上我想要的是这样做,以缩短代码:

def walk200():
    reyield walk(200)

我如何reyield

2 个答案:

答案 0 :(得分:4)

Python 3.3及更高版本:

def walk200():
    yield from walk(200)

对于较低版本,您会遇到所发布的代码。

答案 1 :(得分:2)

在您的具体示例中,您可以简单地return walk(200),这将适用于所有python版本。只有在某些情况下才需要yield from