我這樣做:Reyield發電機
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
?
我這樣做:Reyield發電機
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)
對於較低的版本中,你被卡住你發佈的代碼。
在您的具體示例中,您可以簡單地使用return walk(200)
,這將適用於所有python版本。只有在某些情況下才需要yield from
。
有趣。你能澄清嗎?什麼時候和爲什麼需要,什麼時候不需要? – dangonfast
@dangonfast(1)如果在一個函數中有多個yield語句,並且只想將其中的一些委派給另一個函數,或者更重要的是(2)如果將生成器用作協程,請參見https:/ /stackoverflow.com/questions/9708902/in-practice-what-are-the-main-uses-for-the-new-yield-from-syntax-in-python-3 –
Python 3.x:'從步行(200)產生' –
@MosesKoledoye其中x> = 3 –