web-dev-qa-db-ja.com

forループで型に注釈を付ける方法

for-ループ内の変数のタイプに注釈を付けたい。私はこれを試しました:

for i: int in range(5):
    pass

しかし、明らかにうまくいきませんでした。

私が期待するのは、PyCharm 2016.3.2でオートコンプリートが機能することです。このような事前注釈:

i: int
for i in range(5):
    pass

助けにはなりません。

追伸PyCharm> = 2017.1の事前注釈機能

46
grepcake

PEP 526 によると、これは許可されていません。

さらに、1つは、forまたはwithステートメントで使用される変数に注釈を付けることができません;タプルの解凍と同様に、事前に注釈を付けることができます

ループの前に注釈を付けます。

i: int
for i in range(5):
    pass

PyCharm 2018.1以降は、ループ内の変数の型を認識するようになりました。これは、古いPyCharmバージョンではサポートされていませんでした。

64
alecxe

このソリューションがPEPと互換性があるのか​​、それともPyCharmの機能なのかわかりませんが、このように動作させました

for i in range(5): #type: int
  pass

そして、私はPycharm Community Edition 2016.2.1を使用しています

28
David Vasquez

これは私のPyCharmでうまく機能します(Python 3.6)を使用して)

for i in range(5):
    i: int = i
    pass
7
Samir