如何在for循环中注释类型

时间:2017-01-13 18:47:21

标签: python for-loop pycharm type-hinting python-3.6

我想在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

4 个答案:

答案 0 :(得分:50)

根据PEP 526,不允许这样做:

  

此外,一个无法注释forwith中使用的变量   声明;它们可以提前注释,类似于   元组拆包

在循环之前注释它:

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

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

答案 1 :(得分:22)

我不知道这个解决方案是PEP兼容还是只是PyCharm的一个功能,但我让它像这样工作

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

我正在使用Pycharm Community Edition 2016.2.1

答案 2 :(得分:5)

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

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

答案 3 :(得分:-3)

这里没有任何回复是有用的,只是说你做不到。甚至接受的答案都使用PEP 526文档中的语法,这是无效的python语法。如果您尝试输入

x: int

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

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

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

使用x开展工作。 PyCharm识别它的类型,并且自动完成工作。