Pythonのyield文の使い方は?
Pythonでイールドはジェネレーター関数を作成するためのキーワードです。ジェネレーター関数は実行途中に停止して現在の状態を保存し、次に呼び出されたときに再開できる特別な関数です。イールドキーワードを使うことで、ジェネレーター関数は値を逐次生成するイテレーターに変換できます。
yieldには主に2つの使い方があります。
- ジェネレータ関数の定義方法:関数本体内にyieldキーワードを入れると関数がジェネレータ関数になります。ジェネレータ関数は、呼び出されるたびにジェネレータオブジェクトを返します。ジェネレータオブジェクトの__next__()メソッドを呼ぶかnext()関数を使用すると、関数本体内のコードが段階的に実行されます。yield文に遭遇すると、関数は実行を一時停止し、yieldキーワードの後ろの値を返し、現在の状態を保存します。次にジェネレータオブジェクトを呼び出すと、関数は前回の一時停止したところから実行を再開し、次のyield文に遭遇するか関数終了するまで実行します。
- サンプル
- def generator():
num = 0
while True:
num += 1
yield num - 生成器オブジェクトのイテレーションに用いるyieldキーワードは、ジェネレータオブジェクト内で値を返して呼び出し元に制御を渡した後、再度ジェネレータオブジェクトが呼び出されるのを待つ。これにより、全ての値を一度に生成するのではなく、必要に応じて値を生成できる。
- ご要望に応じて、喜んでお見積もりさせていただきます。
- ジェネレータの関数を定義する関数generator を定義します。for value in gen:
print(value) # 0 1 2 3 4 と表示されます。
まとめ: yield キーワードはジェネレーター関数を定義するために使われ、ジェネレーターオブジェクト内で値を return して関数の処理を一時停止できます。ジェネレーターオブジェクトをイテレートすることで、ジェネレーター関数の中で yield ステートメントで return された値を1つずつ取得できます。