原來的 Python 程式結構大致是這樣

1
2
3
4
def f():
    for i in range(2):
        yield i
    return i+2

看起來沒什麼問題
但實際執行後卻在 return i+2 那行出現 SyntaxError: ‘return’ with argument inside generator 錯誤
請改成下列結構就可以跑了

1
2
3
4
def f():
    for i in range(2):
        yield i
    yield i+2

這好像是 yield 已產生一個類似 return 的傳回型態,此時就無法再用 return 來產生回傳