Python 2 では、関数定義で return が yield と一緒にあるとエラーが発生しました。しかし、Python 3.3 のこのコードでは
def f():
return 3
yield 2
x = f()
print(x.__next__())
yield を伴う関数で return を使用してもエラーはありません。ただし、関数__next__
が呼び出されると、例外 StopIteration がスローされます。戻り値だけがないのはなぜ3
ですか?このリターンはどういうわけか無視されていますか?