\

Pythonでは、関数内でyieldを使用すると、その関数はジェネレータとして動作します。例えば、以下のような関数fooを考えてみましょう。

def foo():
    for i in range(10):
        yield i

この関数を呼び出すと、0から9までの値が順に生成されます。

しかし、yieldreturnを同じ関数内で併用すると、yieldの結果のみが返され、returnの結果は無視されます。これはPythonの仕様で、ジェネレータ内でのreturnStopIterationとして扱われるためです。

したがって、基本的にはyieldreturnの併用は難しく、どちらか一方を選ぶことが推奨されます。

ただし、何らかの理由でreturnと併用したい場合には、yield fromを使用することでreturnに設定した値を取得することが可能です。以下にその例を示します。

def buzz():
    i = 0
    for j in range(10):
        i += j
        yield j
    return i

def getter():
    x = yield from buzz()
    yield x

このように、yield fromを使用すると、returnの値まで取得できます。ただし、yield fromは関数内でしか使用できないので注意が必要です。

以上が、Pythonにおけるyieldreturnの併用についての説明です。この情報がPythonの理解に役立つことを願っています。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です