0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Pythonは動的型付けの言語ですが、Pythonの型ヒントはPython 3.5以降バージョンを重ねるごとに進化し続けています。
型アノテーション(型ヒント)と上手く付き合うことで、実装コードの書きやすさや可読性が向上し、個人開発・チーム開発どちらでも型ヒントを導入することでたくさんの恩恵を受けることができるでしょう。
本記事では、Pythonの型定義について初心者向けに解説します。

型ヒント導入のメリット

  1. 可読性の向上
    型を明示することで、コードの意図を他人や未来の自分に伝えやすくなります
  2. バグの早期発見
    mypyなどの静的解析ツールと併用することで、潜在的な型エラーを実行前に検出することができます
  3. 補完の強化
    IDE(例: PyCharm, VSCode)が型情報を元に補完や警告を提供してくれます

以下VSCodeですが、型ヒントを書くことでIDEの補完が機能してくれます。
補完は開発者体験に大きく関わるので型定義は大事です。
TypeHint.png

型定義を導入する際の注意点
Pythonの型は静的解析にのみ使用され、Pythonの実行時には無視されます。
そのため、厳格な型チェック・型バリデーションチェックをするにはmypyPydanticなどの併用をお勧めします。

sample: int = "hello"
# 実行時はエラーにならない
print(sample)  # 実行結果: hello

変数の型定義

name: str = "山田"
age: int = 30
height: float = 1.75
is_student: bool = False
phone_number: str  # 代入せずに型ヒントだけ定義することもできます

関数の型定義

関数の引数や戻り値にも型を指定できます。
-> <型>が戻り値の型ヒントです。

def greet(name: str) -> str:
    return f"Hello, {name}!"

型ヒントを付けることで、この関数はnameに文字列を受け取り、文字列を返すことが明示されます。

コレクション型

リスト、辞書、タプルなどのコレクション型にはそれぞれList, Dict, Tupleを使用します。

from typing import List, Dict, Tuple

names: List[str] = ["山田", "佐藤"]
data: Dict[str, int] = {"山田": 25, "佐藤": 30}
pair: Tuple[str, int] = ("山田", 25)

Python 3.9で、組み込み型(list,dict,など)に対して直接型引数を指定できる機能が追加されました。これにより以下のように簡潔に記述が可能です。

names: list[str] = ["山田", "佐藤"]
data: dict[str, int] = {"山田": 25, "佐藤": 30}
pair: tuple[str, int] = ("山田", 25)

Union型

複数の型を受け入れる場合はUnionを使用します。

from typing import Union

data: Union[int, str]

Python3.10以降はUnion|に簡略化可能です。

from typing import Union

data: int | str

Optional型

値がNoneになる可能性がある場合はOptionalを使用します。

from typing import Optional

data: Optional[str]

Python3.10以降の|を使用して以下のように表現することもできます。

from typing import Optional

data: str | None

まとめ

型アノテーションはコードの品質向上やバグ防止に非常に有効です。
本記事を参考に、ぜひ型アノテーションを日々の開発に取り入れてみてください!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?