Python3エンジニア認定基礎試験 用語解説
イテレータとは
for 文が裏で使う仕組み。for 文はコンテナに iter() を呼び、iter() は __next__() メソッドを持つイテレータオブジェクトを返す。これ以上要素がないと __next__() が StopIteration 例外を送出してループが終了する。自作クラスは __next__() を持つオブジェクトを返す __iter__() を定義すればイテレータとして振る舞える。
この記事の目次
まず押さえる結論
イテレータは、Python3エンジニア認定基礎試験の「第9章 クラス」に出てくる用語です。定義だけでなく、どの場面で使う言葉か、何と混同しやすいか、問題文のどの表現で判断するかまで確認します。
情報源と編集区分
公式範囲を確認し、具体例・誤答例・判断手順は当サイトが編集。 一次情報確認日: 2026-09-18。
試験概要(公式)比較記事でさらに確認する
試験での問われ方
定義の言い換え
用語そのものではなく、説明文の一部を言い換えて出されることがあります。
似た概念との比較
同じ章の用語と入れ替えた選択肢に注意します。対象、目的、使う場面を分けます。
具体例からの判断
問題文の事例が、定義のどの部分に対応しているかを先に確認します。
誤答しやすいポイント
「第9章 クラス」の問題で、取り違えやすい組み合わせです。
- メソッドの最初の引数 self の扱い。公式チュートリアル9.4は「この名前付けは単なる慣習でしかありません。self という名前は、Python では何ら特殊な意味を持ちません」と述べており、予約語ではない。ただし慣習に従わないと読みにくくなるとも述べている。
- クラス変数とインスタンス変数の混同。どちらに属する値かで、他のインスタンスへの影響が変わる。
- 最初の引数を省略できると思い込むこと。インスタンスのメソッドは最初の引数でインスタンス自身を受け取るため省略できない。
関連する確認問題
第9章 クラス / イテレータとジェネレータ
自作のクラスにイテレータとしての振る舞いを持たせたい。公式チュートリアルの説明に合うものはどれか。
正解は「__next__()メソッドを持つオブジェクトを返す__iter__()メソッドを定義する。クラス自身が__next__()を定義している場合は、__iter__()は単にselfを返してよい」である。公式チュートリアル9.8は、自作のクラスにイテレータとしての振る舞いを追加するには、__next__()メソッドを持つオブジェクトを返す__iter__()メソッドを定義すればよいと説明し、クラスが__next__()を定義している場合は__iter__()は単にselfを返すことも可能だと述べている。要素が尽きたときは__next__()でStopIterationを送出する。
第9章 クラス / イテレータとジェネレータ
ジェネレータが、クラスを使ったイテレータより簡潔に書ける理由として、公式チュートリアルの説明に合うものはどれか。
正解は「__iter__()と__next__()が自動で作成され、ローカル変数と実行状態が自動で保存され、終了時にStopIterationが自動で送出されるから」である。公式チュートリアル9.9は、ジェネレータの定義がコンパクトになるのは__iter__()メソッドと__next__()メソッドが自動で作成されるからであり、呼び出しごとにローカル変数と実行状態が自動的に保存され、終了時には自動的にStopIterationが送出されると説明している。これらの機能により、通常の関数を書くのと同じ労力でイテレータを生成できる。
第9章 クラス / イテレータとジェネレータ
ジェネレータ式の構文について、公式チュートリアルの説明に合うものはどれか。
正解は「リスト内包表記に似た構文で、角括弧ではなく丸括弧で囲む」である。公式チュートリアル9.10は、単純なジェネレータは式として簡潔にコーディングでき、その式はリスト内包表記に似た構文を使うが、角括弧ではなく丸括弧で囲うと説明している。ジェネレータ式は、関数の中でジェネレータをすぐに使いたいような状況のために用意されている。括弧の種類が違うだけで、リスト内包表記に似た構文で書ける点が要点である。ジェネレータ式は、関数の中でジェネレータをすぐに使いたい状況のために用意されている。
同じ章で確認したい用語
到達チェック
- イテレータを一文で説明できる
- 同じ章の似た用語と違いを説明できる
- 問題文の具体例から、イテレータに関係する論点を拾える
- 関連問題を解き、誤答した選択肢の理由を確認できる
執筆: ミナト編集部(運営者情報を見る)