Python PR

【Python】型ヒントに沿ってソースコードが書けているかチェックする方法

記事内に商品プロモーションを含む場合があります

この記事では、Pythonのソースコードが型ヒントに沿って書けているかチェックする方法を解説します。

ソースコードが型ヒント通りに書けているか確認するにはmypyモジュールを使います。mypyは、標準ライブラリではないのでpipでインストールします。

Linkmypy 0.961 documentation

それでは、実際に簡単なソースコードを作成してmypyを使って型ヒント通りに書けているかチェックしてみましょう!

mypyのインストール

mypyは標準モジュールではないのでインストールする必要があります。

仮想環境を利用したい場合は以下の記事を参照してください。

仮想環境の使い方【venv】

ここではpipを使ってインストールします。

$ pip install mypy

pipが使用できない方は以下の記事を参照してください。

pipのインストール【Mac/Windows】

ソースコードの用意

mypyがインストールできたら次に、以下のような簡単なソースコードを用意します。名前は適当にtestmypy.pyとかで保存しましょう。

testmypy.py

num: int | float = 'abc'
vals: list[str] = [1, 2, 3]

num変数にはintvals変数にはstrlistを型ヒントで指定していますが、敢えて異なる型のオブジェクトを代入しています。

型ヒントについては以下の記事を参照してください。

型ヒントで使用する型を指定しよう【アノテーション】

このソースコードが型ヒント通りに書けているかmypyを使ってチェックしてみましょう!

mypyの実行

コマンドラインを起動して先ほどのtestmypy.pyが保存されている場所に移動します。僕の場合は/Users/user/Desktop/Python/mypy/に保存したので以下のようにcdを使って移動します。

$ cd /Users/user/Desktop/Python/mypy/

そしたら、testmypy.pymypyコマンドで実行します。

$ mypy testmypy.py

実行すると以下のように型ヒント通り書かれていない箇所がエラーとして表示されます。

$ mypy testmypy.py 
testmypy.py:1: error: Incompatible types in assignment (expression has type "str", variable has type "Union[int, float]")
testmypy.py:2: error: List item 0 has incompatible type "int"; expected "str"
testmypy.py:2: error: List item 1 has incompatible type "int"; expected "str"
testmypy.py:2: error: List item 2 has incompatible type "int"; expected "str"
Found 4 errors in 1 file (checked 1 source file)

表示されたエラーを確認しつつ、型ヒント通りにソースコードを書き直して実行してみます。

testmypy.py

num: int | float = 3.14
vals: list[str] = ['a', 'b', 'c']

コマンドライン

$ mypy testmypy.py
Success: no issues found in 1 source file

Successが表示されたので型ヒント通りに書かれていることが確認できました。