Blog Post

Python 型について


作成日 2023-02-27

目次

概要

本記事、Python の型について触れます。

型(タイピング)とは

入力や出力の形を明示することです。

具体例

型無し Python だと以下の通りです。

import db
def find_the_value(x,y):
    return db.User.get(x).filter_name(y)

型付き Python だと以下の通りです。

from uuid import UUID
import db
def find_the_value(x: UUID, y: str) -> db.User:
    return db.User.get(x).filter_name(y)

なぜ?

型無し Python だと関数やクラスを定義するタイミングで、実装している関数等に何が引数に入るかがわからないです。 実装者が定義するタイミングで分かったとしても、他の人が修正を入れるタイミングでどのように修正すればいいかが分からなくなります。 また、関数の利用者側もどういう値を引数に入れればいいか分からなくなります。

型を使えば、修正するタイミングでどのような値が関数内に入るかがわかります。 また、関数の利用者側もどういう値を引数に入れるかもわかります。 これらによりコードの品質も上がります。

また、mypy を使用するところや FastAPI 等のフレームワークでも型を使います。
モダンな方向に進むのであれば、覚えて損はないでしょう。

記法

ここが一番参考になります。
Qiita:Pythonの型を完全に理解するためのtypingモジュール全解説(3.10対応)

著者がよく使うものを書くと以下の通りです。

from typing import Dict, List, Optional, Union, Tuple

a: int
a: bool
a: str
a: Optional[str] # str or None
a: Dict[str, str] # {str: str,...}
a: dict[str, str] # 上と同じ
a: List[str] # [str, ...]
a: list[str] # 上と同じ
a: Union[int, str] # int or str
a: Tuple[str, int] # (str, int)
a: tuple[str, int] # 上と同じ
a: tuple[int, ...] # (int, int, int, int)

メリット

  • コードの品質向上 (読み手側が喜ぶ)

デメリット

  • 時間がかかる (めっちゃくちゃ早いプロトタイピングには不向き)

最後に

Python の型について紹介しました。
Python の型により可読性が上がることを説明しました。
もし複数で共同開発をするならぜひ検討してみてはいかがでしょうか。

参考文献

Qiita:Pythonの型を完全に理解するためのtypingモジュール全解説(3.10対応)