Pythonの型ヒント(アノテーション)については、基本的に公式ドキュメントに記述されています。しかし、実用的な範囲でのシンプルな例が記載されているため、理解したいこと以外の情報もあり、やや理解しにくいことがある。
TypeVarとは
TypeVarは、「とある決まった型」を表す場合に用いる型変数である。
from typing import TypeVar
T = TypeVar("T")
def get_t_arg(arg: T) -> T:
return arg
上記のget_t_arg(arg: T) -> T
の型ヒントは、「引数argの型がTであるとき、返り値の型がTである」ことを意味します。
TypeVarとAnyの違い
Anyとは、制約のない型である。
from typing import Any
def get_any_arg(arg: Any) -> Any:
return arg
上記のget_any_arg(arg: Any) -> Any
の型ヒントは、「引数argに型の制約はなく、返り値にも型の制約はない」ことを意味します。
許容する型を制限する場合のTypeVarの使用例
TypeVarを用いたいが、許容する型を制限したい場合がある(例えば「intまたはfloatのみを許容する」など)。
from typing import TypeVar
T = TypeVar("T", int, float)
def add_one_to_t_arg(arg: T) -> T:
return arg + 1
上記のようにT = TypeVar("T", int, float)
と宣言した際のadd_one_to_t_arg(arg: T) -> T
の型ヒントは、「引数argの型はintまたはfloatであり、argの型がintのときの返り値の型はint、argの型がfloatのときの返り値の型はfloatである」ことを意味します。
以上がPythonのTypeVarについての基本的な説明です。この情報がPythonの型ヒントを理解する上で役立つことを願っています。