型アノテーション(type hints)とは、変数、引数、関数の戻り値の期待される型を明示的に指定する方法です。構文はPython 3.5で登場しました(PEP 484)。アノテーションは静的であり、インタプリタは実行時に無視します。これはコード分析ツール(mypy、Pyright、IDE)向けです。
アノテーションは以下を助けます:
例:
def add(x: int, y: int) -> int: return x + y def show(items: list[str]) -> None: print(', '.join(items))
よくある質問:
型アノテーションは、コードの実行時間や正確性に影響を与えることはありますか?
答え: いいえ、型アノテーションは実行時のパフォーマンスやプログラムの機能には影響を与えません。これはあくまでメタデータです。しかし、FastAPIのような外部ツールやフレームワークによって型の監視や検証に使用される可能性があります。
物語
プロジェクトでは、大きな動的構造をlist、dictによって型付けしましたが、要素を明示せずに行いました(例:def f(x: list): ...)。その結果、静的解析ツールはアノテーションから内部に何があるのかが不明なため、型エラーを識別できませんでした。
物語
Python 3.7で後期評価をサポートするためにfrom __future__ import annotationsを使用しましたが、プロジェクトの一部でこれを忘れました。これにより、フォワードリファレンスが静的分析中および特定のフレームワークを使用する際の実行時にエラーを引き起こしました。
物語
大規模プロジェクトで、戻り値の型を誤って指定しました:Optionalをインポートし忘れ、mypyからエラーを受け取り、自動補完やエラーのハイライトを妨げるIDEの未文書化された問題の一連を引き起こしました。