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つずつ生み出します。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%