虽然我更喜欢尽可能使用类型提示,但使用assert isinstance(...)可能是实现相同好处的替代解决方案/工作区(即:我不知道这在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 :-)
5条答案
按热度按时间xiozqbni1#
根据PEP 526,这是不允许的:
此外,不能注解
for
或with
语句中使用的变量;它们可以以类似于元组解包的方式提前注解在循环之前注解它:
5sxhfpxr2#
我不知道这个解决方案是否与PEP兼容,或者只是PyCharm的一个功能,但我让它像这样工作:
使用Pycharm社区版2016.2.1
hrysbysz3#
这对于我在PyCharm中的工作很好(使用Python 3.6)
66bbxpm54#
虽然我更喜欢尽可能使用类型提示,但使用
assert isinstance(...)
可能是实现相同好处的替代解决方案/工作区(即:我不知道这在PyCharm中是否有效,但它在Visual Studio Code中确实有效。显然,添加
assert
会对代码产生影响,这可能是好事也可能是坏事,具体取决于你的用例。它肯定不同于类型提示,但作为副作用,它似乎有相同的好处。i5desfxk5#
这里没有一个回答是有用的,除了说你不能。甚至接受的答案使用的语法来自PEP526文档,这是无效的python语法。如果你试图输入
你会发现这是一个语法错误。
下面是一个有用的解决方法:
使用
x
进行工作。PyCharm可以识别其类型,并自动完成。