web-dev-qa-db-ja.com

MyPy:python 3.5コードで変数の型注釈が必要

python 3.5コードでmypyを使用していますが、次のようなメッセージがたくさん表示されます:

ファイル:行番号:エラー:変数の型注釈が必要です

しかし、私はpython 3.6でのみ変数注釈の構文を導入したpython 3.6の新機能について読みました:

PEP 484は、関数パラメーターの型注釈、別名型ヒントの標準を導入しました。このPEPは、Python=に構文を追加して、クラス変数やインスタンス変数を含む変数のタイプに注釈を付けます...

また、python 3.5プログラムの変数に変数型注釈を追加しようとすると、SyntaxErrorがスローされます。

私は何をすべきか?このメッセージを無視しますか? python 3.6に更新しますか? mypypython 3.6で記述されているようにコードをコンパイルするのはなぜですか?

10
Yuval Pruss

あなたのコードはmypyがしようとする型推論を混乱させています。たとえば、次のスニペットのように名前を再定義しても、mypyはfのタイプを推測できません。

f = []
f = {}

fのタイプが何であるかを理解できないため、不平を言い、変数の注釈が必要であると通知します。タイプヒントを明示的に指定できます。

  • Python 3.5の型コメント。
  • Python 3.6の変数アノテーション

mypy3.6でコンパイルされません。このエラーは両方のバージョンに存在します。違いは、それに取り組む方法です。

コメントを使用して変数の型に注釈を付ける

x = 5 # type: int
my_list = [] # type: List[str]

チートシートを確認する

https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html

17
jOOsko

空白の値がある場合は、変数のタイプを定義する必要があります。例えば:

my_val: str = ""
my_val1: dict = {}
my_val2: list = []

など。あなたの場合、私はpythonのバージョンを3.6に変更することを検討します。更新コードが必要です。

2
porto