mypy
Type hints 覚書き
- Union[int, str]
-
intorstrの意。とり得る型が全部わかっているなら、Anyと書くより列記したほうがよい。 - Optional[str]
-
strorNoneの意 - 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 が追加できる)
