我想在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兼容,或者只是PyCharm的一个功能,但我让它像这样工作:

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

我使用的是Pycharm社区版2016.2.1

其他回答

我不知道这个解决方案是否与pep兼容,或者只是PyCharm的一个功能,但我让它像这样工作:

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

我使用的是Pycharm社区版2016.2.1

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

此外,不能注释for或with中使用的变量 声明;可以提前对它们进行注释,类似于 元组拆包

在循环之前注释它:

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

PyCharm 2018.1及以上版本现在可以识别循环内变量的类型。旧版本的PyCharm不支持这一点。

这里没有一个回答是有用的,除了说你不能。即使是被接受的答案也使用了来自PEP 526文档的语法,这不是有效的python语法。如果你试着输入

x: int

您将看到这是一个语法错误。

这里有一个有用的变通方法:

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

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

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

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