mypy
Type hints 覚書き
- Union[int, str]
-
int
orstr
の意。とり得る型が全部わかっているなら、Any
と書くより列記したほうがよい。 - Optional[str]
-
str
orNone
の意 - Any
-
なんでもいい
- ignore
-
mypy エラーを抑止
これ
Any は型チェックの敗北
ignore は敗北その2
実行時にわかること
は mypy にはわからないmypy が解釈できないなら人間にも読みにくい
Type hints はどこに必要か、どこに書くべきか
引数と戻り値
定数の初期化時 (空の場合のみ)
変数の初期化時
まわりのひとに、こうしてほしい (この型にしてほしい) って知らせたいとき
ついていたらありがたいと (自分が) 思うところ
どこという決まりはどうもないらしい (調べていて今のところ見つかっていない)
とりあえずのところ、 mypy に怒られるところにつけていけば、そのうちわかるようになると思う
python3 ではこういうふうに書ける
# https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html age: int = 1 x: List[int] = [1] def f(num1: int, my_float: float = 3.5) -> float: return num1 + my_float
typing --- 型ヒントのサポート ( バージョン 3.5 で追加 と言っている)
python3 でも、type hints を書いたからと言って、言語側でチェックしてくれるわけではない。 static type checker と言っているのが、
mypy
とかのこと。
Tips
-
PyCharm で、
関数名やら定数やら変数やらを範囲選択
->Option + Enter
で type hints を自動追加できるガイド: PyCharmのヒント
いくつか試してみたけど、半々くらいの確率でちゃんとなる (期待どおりの type hints が追加できる)