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 の公式クイック チートシート
公式ドキュメント ↩
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3