「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MyPy の紹介

MyPy の紹介

2024 年 8 月 26 日に公開
ブラウズ:597

MyPy Introduction

導入

MyPy1 は、Python の静的型チェッカーです。 C や Java のような静的に型指定される言語とは異なり、Python は動的に型指定されます。これは、Python では変数の型を明示的に宣言する必要がないことを意味します。それは実行時に推測されます。例えば:

Python (動的型付け)

num = 4                # `num` is inferred as an integer
newString = "new string"  # `newString` is inferred as a string

対照的に、静的に型指定された言語では、コンパイル時に各変数の型を指定する必要があります。これは、実行時ではなく開発中に型関連のエラーを捕捉するのに役立ちます。

C (静的型付け)

int num = 4;            // `num` is declared as an integer
std::string newString = "new string";  // `newString` is declared as a string

MyPy を使用する理由

Python のような動的型付け言語では、実行時に型エラーが発生する可能性があり、追跡が困難なバグにつながる可能性があります。 MyPy は、Python コードに型ヒントを追加できるようにすることでこの問題に対処し、実行前に静的にチェックできるようにします。これにはいくつかの利点があります:

  • 早期エラー検出: 実行時に発生するのではなく、開発中に型関連のエラーを特定します。
  • コードの可読性の向上: 型ヒントにより、変数と関数の引数の予想される型が明確になり、コードの可読性が向上します。
  • IDE サポートの向上: タイプ ヒントをサポートする IDE でのコード補完とインライン ドキュメントが改善されました。

MyPy を使用した例

これは、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 のインストールと実行

MyPy を始めるには:

  1. インストール: pip を使用して MyPy をインストールします。
   python3 -m pip install mypy
  1. MyPy の実行: インストールしたら、MyPy を実行してコードの型エラーをチェックできます。次のコマンドを使用します。
   mypy program.py

このコマンドは、コンパイラが C で構文をチェックする方法と同様に、コードを静的にチェックします。実際にコードを実行せずに、見つかった型エラーを報告します。

MyPy を効果的に使用すると、動的な性質の柔軟性を享受しながら、静的型付けの利点を Python に統合できます。

MyPy を使ってサンプルをコーディングしてみましょう

MyPy なし

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 で

型アノテーション (型ヒントとも呼ばれる) を追加することで、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

ここ:

  • name: str アノテーションは、name 引数が文字列であることを指定します。
  • -> str アノテーションは、関数greetingが文字列を返すことを指定します。

MyPy を使用する場合

MyPy はいくつかの状況で役立ちます:

  • エラーを早期にキャッチ: コードを実行する前に、MyPy を使用して型関連のエラーを見つけます。これにより、間違いを早期に発見し、コードの信頼性が向上します。

  • コードをわかりやすくする: 型ヒントを追加すると、コードが理解しやすくなります。これは、どのような種類の値が期待されるかを示し、他の人 (そして将来のあなた) がコードをより深く理解するのに役立ちます。

  • 古いコードをアップグレードする: 古いコードを更新するとき、MyPy は型ヒントを追加するときに型の問題を検出し、移行をよりスムーズにします。

  • プロトタイプの改善: 新しい機能やプロトタイプを構築するとき、MyPy は型ルールを強制することで、新しいコードが既存のコードと正しく動作することを保証します。

  • 大規模プロジェクトの維持: 多くの貢献者がいる大規模プロジェクトでは、MyPy はコードの一貫性を保ち、型関連のバグを防ぐのに役立ちます。

  • IDE 機能の強化: IDE を使用している場合、MyPy はコード補完やナビゲーションなどの機能を向上させ、開発を容易にします。

MyPy を使用すると、Python の柔軟性を享受しながら、より優れた、より信頼性の高い Python コードを作成できます。

mypy の公式クイック チートシート


  1. 公式ドキュメント ↩

リリースステートメント この記事は次の場所に転載されています: https://dev.to/aniket_purohit/mypy-introduction-1i3?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3