MyPy1 は、Python の静的型チェッカーです。 C++ や Java のような静的に型指定される言語とは異なり、Python は動的に型指定されます。これは、Python では変数の型を明示的に宣言する必要がないことを意味します。それは実行時に推測されます。例:
num = 4 # `num` is inferred as an integer newString = "new string" # `newString` is inferred as a string
対照的に、静的に型指定された言語では、コンパイル時に各変数の型を指定する必要があります。これは、実行時ではなく開発中に型関連のエラーを捕捉するのに役立ちます。
int num = 4; // `num` is declared as an integer std::string newString = "new string"; // `newString` is declared as a string
Python のような動的型付け言語では、実行時に型エラーが発生する可能性があり、追跡が困難なバグにつながる可能性があります。 MyPy は、Python コードに型ヒントを追加できるようにすることでこの問題に対処し、実行前に静的にチェックできるようにします。これにはいくつかの利点があります:
これは、MyPy での型ヒントの使用を示す簡単な例です。
def add(a, b): return a + b print(add(5, 3)) # Output: 8 print(add("hello", "world")) # Output: helloworld
上記のコードでは、add 関数は整数と文字列の両方を受け入れることができますが、これは意図した動作ではない可能性があります。
def add(a: int, b: int) -> int: return a + b print(add(5, 3)) # Output: 8 # mypy will report an error for the following line: # print(add("hello", "world")) # TypeError: Expected int, got str
型ヒント (a: int、b: int) を含めることで、加算が整数のみで機能するように指定します。 MyPy は、これらの型ヒントに対してコードをチェックし、型に関連する潜在的な問題を早期に検出します。
MyPy を始めるには:
python3 -m pip install mypy
mypy program.py
このコマンドは、コンパイラが C++ で構文をチェックする方法と同様に、コードを静的にチェックします。実際にコードを実行せずに、見つかった型エラーを報告します。
MyPy を効果的に使用すると、動的な性質の柔軟性を享受しながら、静的型付けの利点を Python に統合できます。
def greeting(name): return 'Hello ' + name # These calls will fail when the program runs, but MyPy will not report an error greeting(123) greeting(b"Aniket")
型アノテーション (型ヒントとも呼ばれる) を追加することで、MyPy は潜在的な問題を検出できます。
def greeting(name: str) -> str: return 'Hello ' + name greeting(3) # mypy will report: Argument 1 to "greeting" has incompatible type "int"; expected "str" greeting(b'Alice') # mypy will report: Argument 1 to "greeting" has incompatible type "bytes"; expected "str" greeting("World!") # No error
こちら:
MyPy はいくつかの状況で役立ちます:
エラーを早期にキャッチ: コードを実行する前に、MyPy を使用して型関連のエラーを見つけます。これにより、間違いを早期に発見し、コードの信頼性が向上します。
コードをわかりやすくする: 型ヒントを追加すると、コードが理解しやすくなります。これは、どのようなタイプの値が期待されるかを示し、他の人 (そして将来のあなた) がコードをより深く理解するのに役立ちます。
古いコードをアップグレードする: 古いコードを更新するとき、MyPy は型ヒントを追加するときに型の問題を検出し、移行をよりスムーズにします。
プロトタイプの改善: 新しい機能やプロトタイプを構築するとき、MyPy は型ルールを強制することで、新しいコードが既存のコードと正しく動作することを保証します。
大規模プロジェクトの維持: 多くの貢献者がいる大規模プロジェクトでは、MyPy はコードの一貫性を維持し、型関連のバグを防ぐのに役立ちます。
IDE 機能の強化: IDE を使用する場合、MyPy はコード補完やナビゲーションなどの機能を改善し、開発を容易にします。
MyPy を使用すると、Python の柔軟性を享受しながら、より優れた信頼性の高い Python コードを作成できます。
mypy の公式クイックチートシート
公式ドキュメント ↩
以上がMyPy の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。