【Python3.x】StopIteration::value定数の使い方
value定数の使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
value定数は、StopIteration 例外が保持する戻り値を表す定数です。
StopIteration は、Pythonのイテレータプロトコルにおいて、イテレータがこれ以上生成する要素がないことを示すために送出される組み込み例外です。例えば、for ループなどでイテレータを最後まで使い切ると、この例外が内部的に発生してループが終了します。
value 定数は、Python 3.3以降に導入されました。これは、特に yield from 構文と共に使用される高度なジェネレータやコルーチンにおいて、ジェネレータ関数が return 文で特定の値を返したい場合に利用されます。ジェネレータ内で return some_value と記述すると、その some_value が StopIteration 例外の value 属性に格納されます。
そして、この StopIteration 例外を捕捉した yield from 式は、その value 属性の値を自身の戻り値として受け取ります。これにより、ネストしたジェネレータやコルーチン間で、内部の処理結果を外部に正確に伝えることが可能になります。
つまり、value 定数は、単にイテレータの終端を知らせるだけでなく、その終端時にジェネレータが返す「結果」を伝達するための、高度なイテレータ制御における重要なメカニズムとして機能します。
構文(syntax)
1def my_generator(): 2 yield 1 3 yield 2 4 return "Final Value" 5 6gen = my_generator() 7try: 8 next(gen) 9 next(gen) 10 next(gen) 11except StopIteration as e: 12 print(e.value)
引数(parameters)
引数なし
引数はありません
戻り値(return)
Any
StopIterationは、イテレータの終端に到達したことを示す例外です。value属性は、その例外が発生した際に、イテレータが返すべきだった値を保持しています。