型ヒントを使ってみる。

python3.5以降で利用できるようになった、「型ヒント」というのを使ってみた。

python3.5から関数の引数や戻り値の型をメソッドに明記して実装者に知らせることができるようになった。
javaのような静的言語では日常的な話だが、型推論を行う言語ではそのあたりは言語側でやってくれるのであまり意識はしていない。

ただ、型を明記することはできるようになったが強制力はない。
どういうことかというと、例えば以下のような例。

def make_dict(text: str, num: int) -> dict:
    return {text: num}

print(make_dict('key', 1))
print(make_dict(1, 'value'))

make_dict()は第1引数に文字列、第2引数に整数値を取ると書かれている。
次に呼び出し部分で、1回目はその通りの引数を渡しているが、2回目の呼び出しは記述されている型の並びとは異なっている。
これを実行すると、

$ python3 param-return-type.py
{'key': 1}
{1: 'value'}

となる。
どちらも正常終了し、第1引数が辞書のキー、第2引数が辞書のバリューになっている。

ただし、PycharmのようなIDE上で同じ内容のコードを書くと、5行目のところに警告が表示される。
内容は「Expected type 'xxx', got 'yyy' instead」というもので、「予想してたのと違う型の値が渡されていますよ」という内容。

このようになくても問題は無いが、あるとあとからちょっと助かるという機能。
明日の自分のためにも、たくさんの変数を渡す関数などには記述するようにはしたい。