如何在 for 循环中注释类型?

How do I annotate types in a for-loop?

我想在 for 循环中注释变量的类型。我试过了,但没用:

for i: int in range(5):
    pass

我期望在 PyCharm 2016.3.2 中自动完成,但使用 预注释不起作用:

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

P.S。预注释适用于 PyCharm >= 2017.1.

根据PEP 526,这是不允许的:

In addition, one cannot annotate variables used in a for or with statement; they can be annotated ahead of time, in a similar manner to tuple unpacking

在循环之前注释它:

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

PyCharm 2018.1 及更高版本 现在可以识别循环内变量的类型。这在旧 PyCharm 版本中不受支持。

None 这里的回复很有用,除了说你不能。即使是接受的答案也使用 PEP 526 文档中的语法,这是无效的 python 语法。如果您尝试输入

x: int

你会发现这是一个语法错误。

这是一个有用的解决方法:

for __x in range(5):
    x = __x  # type: int
    print(x)

x 一起工作。 PyCharm 识别其类型,并自动完成。

我不知道这个解决方案是 PEP 兼容的还是只是 PyCharm 的一个特性,但我是这样工作的:

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

我正在使用 Pycharm 社区版 2016.2.1

这适用于我的 PyCharm(使用 Python 3.6)

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