
戻り値を返して処理を中断する関数【yield】を説明するよ
【yield】
呼び出された関数内にデータを書き込み、呼び出しもとに値を返します。中断した位置を記憶し、戻り値を返して処理を中断します。
戻り値を返す役割は「return」と同じ機能を持ちますが、yieldは関数内に複数記述されることがあり、その回数分値を返します。
returnとyieldの比較

returnのアルゴリズム
returnは関数の中に1度だけ登場します。図のように関数に呼び出された後、returnのところまで来ると、戻り値を返して終了します。
yieldのアルゴリズム
yieldは関数内に複数回登場します。図の例では、3回記述されています。
まず、1で「example2」関数を呼び出し2でyieldにあたる。3で今まで実行してきたことを記憶して処理中断。
続いて2番目の関数呼び出しが実行され、同様に「example2」関数を呼び出しますが、ここで注意点。処理は1回目の続きから行われ2つめのyieldまで飛びます。そしてそこまで実行していた処理を記憶して処理を中断します。3回目も同様、3つめのyieldまで飛んでから値を返します。
文法
yield 戻り値
コード例
def score():
print(“10を戻す”)
yield “10”
print(“20を戻す“)
yield”20”
print(“30を戻す”)
yield(“30”)
for result in score ():
print(“ 戻り値は”, result)
実行結果
10を戻す
戻り値は10
20を戻す
戻り値は20
30を戻す
戻り値は30
for文の中にyieldを記述する場合
for文を関数yield内に用いることで、ソースコード短くすることができます。
コード例
def score():
score = [“10”, ”20”, ”30”]
for s in score:
print(s, “を戻す”)
yield s
for result in score ():
print(“ 戻り値は”, result)
実行結果
10を戻す
戻り値は10
20を戻す
戻り値は20
30を戻す