Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使发电机重新发电_Python_Generator - Fatal编程技术网

Python 使发电机重新发电

Python 使发电机重新发电,python,generator,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?Python 3.3及更高版本: def walk200(): yield from walk(200)

我会这样做:

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

Python 3.3及更高版本:

def walk200():
    yield from walk(200)

对于较低版本,您只能使用发布的代码。

在您的特定示例中,您可以简单地
返回walk(200)
,这在所有python版本中都适用<代码>从中产生的收益仅在某些情况下是必需的。

Python 3.x:
从walk中产生的收益(200)
@MosesKoledoye,其中x>=3。你能澄清一下吗?何时以及为什么需要,何时不需要?@dangonfast(1)如果在一个函数中有多个yield语句,并且只想将其中一些语句委托给另一个函数,或者更重要的是(2)如果将生成器用作协程,请参阅