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

Python 如何在for循环中注释类型,python,for-loop,pycharm,type-hinting,python-3.6,Python,For Loop,Pycharm,Type Hinting,Python 3.6,我想为-循环的中的变量类型添加注释。 我试过这个: for i: int in range(5): pass 但很明显,它不起作用 我所期望的是在PyCharm 2016.3.2中实现自动完成。 像这样的预注释: i: int for i in range(5): pass 没用 p.S.PyCharm>=2017.1的预注释工作根据,这是不允许的: 此外,一个不能为或使用 声明;它们可以提前注释,方式与 元组解包 在循环之前对其进行注释: i: int for i in r

我想为-循环的
中的变量类型添加注释。
我试过这个:

for i: int in range(5):
    pass
但很明显,它不起作用

我所期望的是在PyCharm 2016.3.2中实现自动完成。 像这样的预注释:

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

p.S.PyCharm>=2017.1的预注释工作根据,这是不允许的:

此外,一个不能为
使用

声明;它们可以提前注释,方式与
元组解包

在循环之前对其进行注释:

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

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

根据,这是不允许的:

此外,一个不能为
使用

声明;它们可以提前注释,方式与
元组解包

在循环之前对其进行注释:

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


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

这里的回答都没有用处,只是说你不能。即使是公认的答案也使用PEP526文档中的语法,这不是有效的python语法。如果你试着输入

x: int
您将看到这是一个语法错误

以下是一个有用的解决方法:

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

使用
x
进行工作。PyCharm可以识别它的类型,并且自动完成功能。

这里的回答没有一个有用,只是说你不能。即使是公认的答案也使用PEP526文档中的语法,这不是有效的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

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

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

我正在使用Pycharm社区版2016.2.1

这对我在Pycharm中的工作非常有效(使用Python 3.6)


这对于我的PyCharm(使用Python 3.6)非常有效



我试过了,但在最后一个稳定的时间里似乎不起作用。至少我没有任何自动完成功能。我正在使用PyCharm 2018.1,它现在可以识别这个表单。@philologon nice!感谢提醒,相应地更新了答案。但是将有一个inspect info
局部变量“i”值未被使用
i:int
中的
i
即使在循环中使用了
i
,也不会被使用。我认为这是这种注释的一个缺陷。我试过了,但在上一个版本中似乎不起作用。至少我没有任何自动完成功能。我正在使用PyCharm 2018.1,它现在可以识别这个表单。@philologon nice!感谢提醒,相应地更新了答案。但是将有一个inspect info
局部变量“i”值未被使用
i:int
中的
i
即使在循环中使用了
i
,也不会被使用。我认为这是这种注释的一个缺陷,至少在Python3.6中是有效的语法。看不出完全错误,但这是没有爱的编码;)至少对于Python3.6来说,它是有效的语法。看不出完全错误,但这是没有爱的编码;)谢谢,但我将坚持使用PEP 526选项,虽然不符合PEP 526,但这在PyCharm中确实有效(至少从2017.2.1开始),并且还可以使用Python 3.0-3.5(不支持Python 3.6中引入的预注释语法)。仅供参考:PEP 484中明确允许/提及此格式(也要与python 2.7兼容)根据此表单,这也是一个有效的选项,也适用于for/enumerate循环和PyCharm 2018。例如,对于索引,enumerate中的area(area_list):#键入:int,AreaInfo
谢谢,但我将坚持使用PEP 526选项。虽然不符合PEP 526,但这在PyCharm中确实有效(至少从2017.2.1开始)并且还可以使用Python 3.0-3.5(不支持Python 3.6中引入的预注释语法)。仅供参考:PEP 484中明确允许/提及此格式(也将与Python 2.7兼容)根据此表单,这也是一个有效选项,也适用于for/enumerate循环和PyCharm 2018。例如,
for index,area in enumerate(area_list):#type:int,AreaInfo
我认为这应该是可接受的答案,因为这与当前可接受的答案完全一样,不会给出其他错误和/或警告。MyPy实际上会抱怨如果您在for循环中重新定义变量,请不要重新定义变量。
I:int
就足够了,您不会再重新定义变量得到任何投诉。我认为这应该是可接受的答案,因为这与当前可接受的答案完全相同,不会发出其他错误和/或警告。MyPy实际上会投诉,如果您在for循环中重新定义变量,请不要重新定义变量。
I:int
就足够了,您不会得到任何补偿laints.只是一个备注:通常情况下,您不应该需要它,因为类型是从范围函数推导而来的(这与所有内部声明变量相关)。只是一个备注:通常情况下,您不应该需要它,因为类型是从范围函数推导而来的(这与所有内部声明变量相关)