5章「タイプヒント」の対策ポイントと例題
5章「タイプヒント」からは本番40問中2問が出ます。型注釈の書き方と、それが実行時には強制されないという性質を問う章です。
- typing
- Optional
- Union
- mypy
- TypedDict
- ジェネリクス
この章の出題数と位置づけ
5章「タイプヒント」からは本番40問のうち2問が出題されます。 全体に占める割合は5.0%で、15章中6番目タイの出題数です(同じ2問の章が他に7章あります)。 合格に必要なのは28問正解(12問まで不正解可)なので、 この章の2問をどこまで取りに行くかは、他の章との兼ね合いで決めるのが現実的です。
対策のポイント
- タイプヒントは実行時に型を検査しません。違う型を渡してもエラーにならない、という前提が問われます。
- Optional[int] は Union[int, None] と同じ意味です。新しい書き方(int | None)との対応も見ておきます。
- 検査するのは mypy などの静的解析ツールであり、Python 本体ではありません。
- 変数注釈・関数注釈の構文と、__annotations__ に何が入るかを押さえます。
この章の例題(3問)
当サイトで実際に出題している問題から3問を、正解と解説つきで掲載します。 すべて自作のオリジナル問題で、実際の試験問題ではありません。
例題1. Python 3.9 以降で、typing モジュールを import せずに「int のリスト」を型ヒントで書く記法はどれか。
- 正解list[int]
- List[int]
- list(int)
- [int]
解説: 3.9 から組み込みコレクション型がジェネリクスに対応した。typing.List は現在は非推奨扱い。dict[str, int] や tuple[int, ...] も同様。
例題2. Optional[str] と同じ意味になる、Python 3.10 以降の記法はどれか。
- 正解str | None
- str & None
- Union[str]
- Optional(str)
解説: 3.10 で導入された union 演算子。Optional[X] は常に X | None と等価であり、「省略可能な引数」という意味ではない点に注意。
例題3. 次のうち SyntaxError になる記述はどれか。
- 正解def func(title: str): -> str
- def func(title: str) -> str:
- title: str = 'Python'
- numbers: list[int] = []
解説: 戻り値のアロー -> は、行末のコロンより手前に書く。順序は「引数リスト → アロー → 戻り値の型 → コロン」。コロンの後ろにアローを置く形は文法として成立しない。
この章は当サイトに全6問を収録しています。残りはドリルの「章別に解く」から解けます。