Q1関数 def add(x, y): の 引数 と 戻り値 に、それぞれ int の型ヒントを付ける書き方として 正しい ものはどれですか?
型ヒント — : int -> str でコードに意図を残す
Python の型ヒント(type hints)を基礎から解説します。動的型付けの課題、def f(x: int) -> str: の関数シグネチャ、変数注釈の使い分けまで丁寧に学べます。
コードに 「ここには何が入るか」 という意図を残す道具 — 型ヒント(type hints) を整理します。Python 3.5 で導入され、バージョンアップごとに表現力が拡張されてきました。
動的型付け言語ゆえの「型が見えない」問題
Python は 動的型付け言語 です。value = 10 とすれば int、value = "HELLO" と書き直せばその瞬間から str。同じ変数に いつでも違う型 を入れ直せる柔軟さがある反面、規模が大きくなったりチームで触ったりするにつれ、「この変数には何が入っているのか」「この関数は何を返すのか」が コードを読むだけでは分からなくなる という課題が生じます。
型ヒントは、この情報を注釈として残すためのもので、実行時の挙動は変わりません。代わりに、人間が読むときの手がかり と、IDE / 静的解析ツールが事前にエラーを発見するヒント として大きな価値を持ちます。
price には何を渡せばよいのか」を 呼び出し側が推測 することになる。ヒント付き にすれば、関数のシグネチャを見ただけで 入力と出力の型がそのまま読める。関数シグネチャに型ヒントを書く
型ヒントの メイン舞台は関数シグネチャ です。引数は 引数名: 型 の形でコロンの後に型を書き、戻り値は -> 型 という矢印で関数定義の末尾に書きます。
# ❌ 型ヒントなし — シグネチャから何を渡すか読み取れない
def calc_tax(price, rate):
return int(price * (1 + rate))
# ✅ 型ヒントあり — int を渡して int が返ることが一目瞭然
def calc_tax(price: int, rate: float) -> int:
return int(price * (1 + rate))
print(calc_tax(price=1000, rate=0.1)) # 1100
変数注釈 — 書くべき場面と書かない方がよい場面
型ヒントは 変数の宣言 にも書けます。書き方は関数引数と同じく 変数名: 型 = 値 の形式です。ただし変数注釈は 書きすぎるとコードが冗長 になり、可読性をむしろ下げます。
# ❌ 冗長な書き方 — 値を見れば型は明らかなので注釈は不要
name: str = "Alice"
age: int = 30
# ✅ 注釈する価値のある書き方 — 中身が空 / 後で代入される / 型が読み取りにくい
results: list = [] # 後で何かを append する空リスト
cache: dict = {} # 値の型まで書きたければ後で詳述
user_id: int = fetch_id_from_session() # 戻り値の型を呼び出し側でも明示
迷ったら「関数は必須・変数は控えめ」
実プロジェクトでは 関数とメソッドのシグネチャには必ず 型ヒントを書き、変数注釈は推測しづらいときだけ 添えるのが標準的なバランスです。age = 30 のような自明な代入は型ヒントを足してもノイズになるだけ、と覚えておきましょう。
型ヒントは「実行時には強制されない」
型ヒントは あくまでヒント です。Python は実行時に型を チェックも強制もしません。def f(x: int) と書いてある関数に f("abc") を渡しても、関数は 普通に呼び出されます — その後で 計算ロジック側で型が合わないとき に初めて TypeError などのランタイムエラーが出るだけで、型ヒント自体が「違反」を検出することはありません。
では何のために書くのか — それは 関数を呼び出す前に エディタや静的解析ツール が型不一致を発見できるからです。VS Code の Pylance / PyCharm / mypy / pyright といったツールは、型ヒントを根拠に 赤線で警告 を出してくれて、実行する前にバグの芽を摘めます。
ブラウザの Python ランナーでは IDE の警告は見えない
このページのコンソールは コードを実行するだけ で、VS Code のような 静的型チェック機能は持ちません。そのため、型ヒントを書いても/違反する値を渡しても、画面上に赤線や事前警告は 一切表示されません。
型ヒントが効く 3 つの場面
理解度チェック
まずは1問ずつ答えてみましょう。
Q2Python の 型ヒント に関する説明として、最も正確 なのはどれですか?
Q3型ヒントを書く場面として 最も推奨される のはどれですか?