希望する型を指定する
このステップでは、変数や関数の引数に希望する型を指定する方法、および型ヒントと条件付きチェックを使用してこれらの型を強制する方法を探索します。Python は動的型付け言語ですが、型ヒントを使用すると、コードに静的な型情報を追加できます。この情報は、mypy
のような型チェッカーが実行時前に型エラーを検出するために利用できます。
型ヒントは、変数、関数の引数、または関数の戻り値の期待される型を指定する注釈です。変数や引数には :
構文を、戻り値には ->
構文を使用して記述します。
以前の例に型ヒントを追加してみましょう。
-
LabEx 環境で VS Code エディタを開きます。
-
~/project
ディレクトリに type_hints.py
という名前の新しいファイルを作成します。
~/project/type_hints.py
-
type_hints.py
に以下のコードを追加します。
def add_numbers(x: int, y: int) -> int:
"""Adds two numbers together."""
return x + y
## Example usage
result: int = add_numbers(5, 3)
print(f"Result: {result}")
## Example with incorrect types
## This will not raise an error at runtime, but a type checker will flag it
## result: int = add_numbers("5", "3")
## print(f"Result: {result}")
このスクリプトでは、
x: int
と y: int
は、引数 x
と y
が整数であるべきことを指定しています。
-> int
は、関数 add_numbers
が整数を返すべきことを指定しています。
result: int
は、変数 result
が整数であるべきことを指定しています。
-
ターミナルで python
コマンドを使用してスクリプトを実行します。
python ~/project/type_hints.py
以下のような出力が表示されるはずです。
Result: 8
型が正しいため、スクリプトはエラーなく実行されます。ただし、型が誤っている行のコメントを外すと、スクリプトは依然として実行されますが、mypy
のような型チェッカーはこれらの行を型エラーとして検出します。
mypy
をインストールして実行するには、以下のコマンドを使用できます。
pip install mypy
mypy ~/project/type_hints.py
pip
は事前に設定されていないため、パッケージが欠落している、またはバージョンが正しくないといったエラーが発生する場合があります。この実験では、型ヒントと条件付きチェックの概念を示すことに焦点を当てます。
型を強制する別の方法は、コード内で条件付きチェックを使用することです。これにより、型が期待されるものでない場合に例外を発生させることができます。
def divide_numbers(x, y):
if not isinstance(x, (int, float)):
raise TypeError("x must be a number")
if not isinstance(y, (int, float)):
raise TypeError("y must be a number")
if y == 0:
raise ValueError("y cannot be zero")
return x / y
## Example usage
result = divide_numbers(10, 2)
print(f"Result: {result}")
## Example with incorrect types
## This will raise a TypeError
## result = divide_numbers("10", 2)
## print(f"Result: {result}")
この例では、isinstance()
を使用して x
と y
が数値(int
または float
)であるかどうかをチェックしています。そうでない場合は、TypeError
を発生させます。また、y
がゼロであるかどうかをチェックし、ゼロの場合は ValueError
を発生させます。
型ヒントと条件付きチェックを組み合わせることで、型エラーが発生しにくい、より堅牢で保守可能な Python コードを書くことができます。