我想在 for
循环中为变量注释类型。我尝试了这个方法,但它没有起作用:
for i: int in range(5):
pass
我期望在 PyCharm 2016.3.2 中使用自动完成功能,但是使用预注释并没有起作用:
i: int
for i in range(5):
pass
附注:预注释适用于PyCharm版本号>=2017.1。
我想在 for
循环中为变量注释类型。我尝试了这个方法,但它没有起作用:
for i: int in range(5):
pass
我期望在 PyCharm 2016.3.2 中使用自动完成功能,但是使用预注释并没有起作用:
i: int
for i in range(5):
pass
附注:预注释适用于PyCharm版本号>=2017.1。
在循环之前进行注释:此外,不能对在
for
或with
语句中使用的变量进行注释;可以事先以类似于元组解包的方式进行注释。
i: int
for i in range(5):
pass
PyCharm 2018.1及以上版本现在可以识别循环内变量的类型。这在旧版PyCharm中不被支持。
key: str df: pd.DataFrame for key, df in myData.items(): ...
- topher217我不知道这个解决方案是否符合PEP标准,或者这只是PyCharm的一个特性,但我是这样让它工作的:
for i in range(5): #type: int
pass
我正在使用 Pycharm 社区版 2016.2.1
for index, area in enumerate(area_list): # type: int, AreaInfo
- simpleuser这在我的PyCharm中很好用(使用Python 3.6)
for i in range(5):
i: int = i
pass
i: int
已经足够了,你不会收到任何投诉。 - user136036虽然我更喜欢在可能的情况下使用类型提示,但是使用assert isinstance(...)
也可以作为一种替代解决方案/变通方法来实现相同的好处(即:在IDE中正确的语法高亮和自动完成)。
我不知道这是否适用于PyCharm,但它确实适用于Visual Studio Code。
for x, y, z in range(5):
assert isinstance(i, int)
# Now VS Code knows the type of `i`, so syntax highlighting
# and auto-completion do work as intended :-)
显然,添加assert
对代码有影响,这可能是好事或坏事,具体取决于您的用例。
它绝对不同于类型提示,但作为副作用,它似乎具有相同的好处。
这里的回答都没有用,除了说你不能这样做。即使是被接受的答案也使用了PEP 526文档中的语法,这不是有效的Python语法。如果你尝试输入
x: int
for __x in range(5):
x = __x # type: int
print(x)
使用x
完成您的工作。PyCharm会识别其类型,并自动完成。