如何在 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
我想在 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
orwith
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