1. Python関数の引数の型について
Pythonでは、関数の引数には様々な型の値を渡すことができます。これらの型には、数値型(int, float)、文字列型(str)、リスト型(list)、ディクショナリ型(dict)、カスタム型などがあります。引数の型を指定することで、関数内部での処理を安全に、そして予想通りに行うことが可能となります。
それでは、Pythonの関数で引数の型を指定する方法について見ていきましょう。
2. 型注釈を使った引数の型指定
Pythonの関数で引数の型を指定する一つの方法は、型注釈(type hints)を使用することです。Python 3.5以降で利用可能なこの機能を使うと、関数の引数や戻り値の型を明示することができます。
ソースコード例
1 2 3 4 5 6 7 8 |
def greet(name: str) -> str: return "Hello, " + name def main(): print(greet("Alice")) if __name__ == "__main__": main() |
上記のコードでは、greet関数の引数nameの型をstr(文字列型)と指定しています。また、戻り値の型もstrと指定しています。
出力結果を確認しましょう。
出力結果
Hello, Alice
3. 引数の型が一致しない場合
型注釈を使用すると、コードの可読性が向上し、IDEや静的解析ツールのサポートも受けやすくなります。しかし、Pythonは動的型付け言語であるため、実行時に引数の型を強制することはありません。したがって、予期しない型の引数が関数に渡された場合でも、Pythonの実行は停止しません。これは一見便利に思えますが、エラーの原因となることもあります。例を見てみましょう。
ソースコード例
1 2 3 4 5 6 7 8 |
def greet(name: str) -> str: return "Hello, " + name def main(): print(greet(12345)) if __name__ == "__main__": main() |
上記のコードでは、greet関数に数値型の引数を渡しています。これは明らかに、関数の引数で期待している文字列型とは一致しません。
出力結果を確認してみましょう。
出力結果
TypeError: can only concatenate str (not "int") to str
4. 型チェックツールの使用
Pythonには、コードの型安全性を静的にチェックするためのツールも存在します。その一つが「mypy」です。mypyはPythonの型チェッカーで、Pythonの動的型付けの利点を生かしつつ、静的型チェックの利点も得ることができます。
まず、Pythonのパッケージ管理ツールであるpipを使ってmypyをインストールします。その後、以下のようにmypyコマンドとともにPythonファイル名を指定することで、型チェックを行うことができます。
出力結果
$ pip install mypy
$ mypy script.py
こうすることで、スクリプト中の型ミスを事前に見つけることができます。
5. まとめ
本記事では、Pythonの関数で引数の型を指定する方法について説明しました。型注釈を使って、引数の型や戻り値の型を明示することで、コードの可読性が向上し、エラーの発生を抑えることが可能となります。
また、型チェックツールを利用することで、コードの型安全性を保証し、予期しないエラーの発生を防ぐことができます。
しかし、Pythonは動的型付け言語であるため、引数の型が予期しないものであっても実行が停止しない点には注意が必要です。適切な型の引数を渡すことで、安全かつ予期通りの動作をするコードを実装することができます。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!