当記事の目的
Python3 での型ヒントの書き方を紹介する。
型ヒントを書く理由
Python では型を示さずとも変数、引数、戻り値の定義ができるので、型がいまいち分かりづらい。
そこで型ヒントを明記すると、それぞれの変数、引数、戻り値の型が一目見てわかるようになり、親切な実装になる。
基本的な書き方
# メソッドの引数と戻り値の型を示す
def get_item(id: int) -> str:
"""
item を取得する
:param id: ID
:return 文字列
"""
# 変数の型を示す
item_name: str = "hogehoge"
各種型ヒントの書き方
個人的に使用頻度の高い型の型ヒントの使い方を、以下に示す。
int
数値型の場合。
# 使用例
number: int = 1
str
文字列型の場合。
# 使用例
name: str = "piyopiyo"
List
リスト型の場合。(ドキュメント)
from typing import List
# 数値のリストである場合
id_list: List[int] = [1, 2, 3]
※ list
もあるが、こちらは Python 3.9 以降非推奨となった模様。
Dict
辞書型の場合。(ドキュメント)
from typing import Dict
# 文字列と文字列の辞書の場合
respose_dict: Dict[str, str] = {"name": "fugafuga"}
※ dict
もあるが、こちらは Python 3.9 以降非推奨となった模様。
Union
複数型が入り得る場合。(ドキュメント)
from typing import Dict, Union
# int または str が入り得る場合
Union[str, int]
# 使用例
param_dict: Dict[str, Union[str, int]] = {"id": 1, "name": "hogepiyo"}
Optional
None またはそれ以外の型が入り得る場合。(ドキュメント)
from typing import Optional
# int または None が入り得る場合
Optional[int]
# 使用例
def get_japanese_str(name: str) -> Optional[str]:
"""
名前に「日本人の」が含まれていれば「日本人です」との文字列を、そうでなければ None を返す
:param person_name: 判定対象の人の名前
:return 「日本人です」または None
"""
if "日本人の" in name:
return "日本人です"
return None