为什么不能在for循环中使用类型提示

时间:2019-11-29 09:24:04

标签: python python-3.x

for i: str in test_string:

我收到了无效的语法错误,我想知道背后的原因。

2 个答案:

答案 0 :(得分:2)

冒号:在Python中历来有多种含义。例如,它表示块的开始(with a as b:,切片预订(a[:])和字典对({a: b})。

这使得在某些位置引入:类型的提示成为不可能或至少是模棱两可的。具体而言,诸如forwith之类的块标题具有:的冲突含义,表示标题的结尾。虽然可以定义明确的语法 ,但是要根据未来维护和扩展语法的需要对此进行加权。到目前为止,这还不值得。

目前,您可以使用前面的类型提示或内联类型注释:

a: str
for a in my_iterable:
    ...

for b in my_iterable:  # type: str
    ...

答案 1 :(得分:1)

您需要按照https://www.python.org/dev/peps/pep-0526/#where-annotations-aren-t-allowed

在循环之前启动它

所以你可以这样做

i : str
for i in test_string: 
    ......
    ......