Python 2では、ジェネレータ関数が値を返そうとすると、次のエラーメッセージが表示されます。 SyntaxError: "return" with argument inside generator
私はジェネレータを受け取るかどうかを指定する関数を書くことは可能ですか?
例えば:
def f(generator=False):
if generator:
yield 3
else:
return 3
回答:
回答№1は4必須読書: Pythonでジェネレータを理解する
キー情報:
yield
関数内のどこでもジェネレータになります。
コードが解析されると、関数はジェネレータとしてマークされます。したがって、実行時に渡される引数に基づいて関数の振る舞い(ジェネレータ/非生成器)を切り替えることは不可能です。