yield ジェネレータの産出
最終更新:2026-09-22
yield ジェネレータの産出
yield は関数をジェネレータに変える;next() のたびに関数は yield の箇所まで実行して値を返し、一時停止する。
| カテゴリ | キーワード/文 |
|---|---|
| 種類 | キーワード/文 |
| Python バージョン | all |
📝 構文
yield [expression]
▶ 例
下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:
実行結果:
[0, 1, 2]
🏷️ 関連するキーワード/文
💡 関連するケース
さらに多くのケースは近日公開予定です。
❓ よくある質問
Q`yield` と `return` の違いは何ですか?
A`return` は関数を終了させて値を返します。`yield` は関数をジェネレータに変え、`next()` のたびに `yield` のところまで実行して1つの値を返して一時停止し、次回はその続きから再開します。
Q`yield` を含む関数を呼んでも本体が実行されないのはなぜ?
A呼び出しはジェネレータオブジェクトを生成するだけだからです。関数本体は最初の `next()`(または `for` ループ、`list()` 変換)を待ってから実際に実行が始まります。
Qジェネレータは繰り返し走査できますか?
Aできません。ジェネレータは一回きりで、走査し尽くすと尽きてしまい、それ以降の反復は空になります。繰り返し走査したいなら結果を先に `list` に変換するか、ジェネレータを作り直します。
Q`yield from` とは何ですか?
A`yield from iterable` は `for x in iterable: yield x` の省略形です。ジェネレータの中で別のイテラブルを「委譲」し、その要素を1つずつ生み出します。