プロジェクト

全般

プロフィール

Python型ヒント

はじめに

Pythonは動的型付け言語なので、変数や関数の引数・戻り値などには型指定をせずに、実行時に値が持つ型と不整合があるとエラーとなります。実行するまでエラーに気づかないので開発効率の観点では静的型付け言語に劣ります。
そこで、Pythonにおいてコード上の引数、戻り値に型指定をすることで実行時に発見していたエラーをコーディング時や実行前の検査時に発見することを可能にします。これにより開発効率の向上を実現します。

関数

型ヒントなしの関数定義 型ヒントありの関数定義
def add(a, b):
    return a + b
def add(a: int, b: int) -> int:
    return a + b
デフォルト引数

引数のアノテーションの後にデフォルト値を記述します。
def greet(message: str = "Hello") -> None:

型アノテーションあれこれ
  • リスト、集合は、list[str]set[float] のように要素の型を角カッコ内に記述
  • 辞書は、dict[str, int] のようにキーと値の型を角カッコ内に記述
  • タプルは、tuple[int, str, float] のように要素の型を角カッコ内に順序で記述
  • 複数の型が入り得る場合、def address(): -> str | None: とパイプ記号で並べて記述
    Python 3.10から、Optional、Union型を型ヒントで使わなくてもよくなった
  • 関数を受け取る引数は、Callable[[int, str], float] のようにCallableに角カッコ内に引数と戻り値の型を記述、from typing import Callable が必要
  • ジェネレータ関数の型は、Iterator[int] とIteratorに角カッコで生成する型を記述
  • 任意型あるいは型チェックをスルーしたい場合、Any型、from typing import Any が必要
  • 特定の定数値を受け付ける Literal型(operation: Literal["production", "development"] )、from typing import Litelal が必要


約1時間前に更新