Pythonのyieldってなんだ
auです。
Pythonのコードの中に「yield」が出てきました。分からなかったので調べてみます。
yieldとは
yieldとは、関数を一時的に停止する機能を持つ文です。
直訳だと「もたらす、生む、譲渡する」という意味があります。
returnが、関数を終了するのに対して、yieldは途中の値を返して中断する感じです。
実際に書いてみます。
def test_yield(a, b): c = a + b yield c d = c * c yield d result_yield = test_yield(1, 2) print(result_yield) # <generator object test_yield at 0x10be8c750> print(result_yield.__next__()) # 3 print(result_yield.__next__()) # 9 print(result_yield.__next__()) Traceback (most recent call last): File "test.py", line 11, in <module> print(result_yield.__next__()) StopIteration
関数を実行すると、generator objectが返ってきています。
そして、__next__()を実行することで、yieldまで実行します。
Python3系だと__next__()で、2系だとnext()の違いがあるようです。