はじめに
Pythonは動的型付け言語であるため、通常は変数や関数の引数、戻り値の型を明示的に宣言する必要はない。
しかし、大規模なプロジェクトやチーム開発の際には、型を明示しておくことで、コードの読みやすさやエラーの早期発見に役立つ。
この記事は、Pythonの静的型チェックをサポートするためのtypingライブラリのList
の解説。
Listとは?
Listはtypingライブラリに含まれる型の一つで、リストの型を表現する。
Listはジェネリック型で、リストに格納される要素の型をパラメータとして持つ。
Pythonの型ヒントは実行時には影響を与えない = 型ヒントに違反するコードでも実行自体は可能。
しかし、型チェッカーやIDE、linterなどが型ヒントを用いて静的なエラーチェックを行うため、
型ヒントを正しく使用することで開発効率の向上につながる。
Listの使い方
from typing import List
def double_elements(numbers: List[int]) -> List[int]:
return [x * 2 for x in numbers]
関数double_elementsは、整数のリストnumbersを引数に取り、その各要素を2倍にした新たなリストを返す。
引数と戻り値の型としてList[int]を指定することで、この関数が整数のリストを扱うことを明示している。
使用例
以下のコードではdouble_elements関数に文字列のリストを渡しているが、このコードは実行時にはエラーになる。
result = double_elements(["one", "two", "three"]) # TypeError at runtime
しかし、double_elements関数の引数の型としてList[int]が指定されているため、このコードは型チェッカーによって型ヒントが違反されていると指摘される。このように、型ヒントを活用することで、実行前にエラーを検出できる可能性が高まる。
Listを使う場面
Listを使う場面は主には以下の通り。
- 関数の引数や戻り値がリストであることを明示したい場合
- リストに格納される要素の型を明示したい場合
特に、大規模なプロジェクトやチームでの開発では、型を明示することでコードの理解を助け、バグを防ぐ助けになる。
注意点
Listには、リストの要素の型を一つだけ指定することができる。
そのため、異なる型の要素を含むリストを表現するには、
List[Union[Type1, Type2, ...]]
のようにUnionを使うか、
List[Any]
のようにAnyを使う必要がある。
まとめ
typingライブラリのListは、Pythonの型ヒントの一部としてリストとその要素の型を明示的に表現するために使用される。
コードの可読性を向上させ、開発効率を向上させる。
しかし、Pythonの型ヒントはあくまでヒントであり、実行時の挙動に影響を与えるものではない。