【Python入門辞典】初心者Python独学サイト|プログラミングを始めよう!<yield>

Pytohon IT基礎知識

戻り値を返して処理を中断する関数【yield】を説明するよ

【yield】

呼び出された関数内にデータを書き込み、呼び出しもとに値を返します。中断した位置を記憶し、戻り値を返して処理を中断します。

戻り値を返す役割は「return」と同じ機能を持ちますが、yieldは関数内に複数記述されることがあり、その回数分値を返します。

returnとyieldの比較

returnとyield何が違うのかみてみよう!

returnのアルゴリズム

returnは関数の中に1度だけ登場します。図のように関数に呼び出された後、returnのところまで来ると、戻り値を返して終了します。

returnアルゴリズム

yieldのアルゴリズム

yieldは関数内に複数回登場します。図の例では、3回記述されています。

まず、1で「example2」関数を呼び出し2でyieldにあたる。3で今まで実行してきたことを記憶して処理中断。
続いて2番目の関数呼び出しが実行され、同様に「example2」関数を呼び出しますが、ここで注意点。処理は1回目の続きから行われ2つめのyieldまで飛びます。そしてそこまで実行していた処理を記憶して処理を中断します。3回目も同様、3つめのyieldまで飛んでから値を返します。

 

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を戻す

タイトルとURLをコピーしました