因为
def f():
for i in range(4):
a = 1
print(a)
return a
可能是空的(如果您覆盖内置的
range(4)
LETS弹弓有点回:Python允许使用其他语言的本地和未结合变量(例如Java,C,JavaScript,...)您必须提供一个值。 在Python中,知道
range
是否会受到a
逻辑的束缚取决于返回的迭代器。可能不会返回一个值。
我们可能期望像
a
或x
for x in X
也可以跟踪,但是即使在以下示例中,也可能会报告未绑定的变量:
X.__iter__()
Pyright决定不实施这种逻辑。更改可能为虚假报告打开大门。
the Promight的检查(pylance使用)可以通过使用进行禁用/更改
list
,例如通过在文件中使用
range
或设置配置值。 您可以通过分配
range
或仅使用for x in [1,2,3]:
print(x)
print(x) # `reportUnboundVariable`
,reportPossiblyUnboundVariable= none
。
aaste trom thouripliblibly unover也是一个设置的设置。
https://github.com/microsoft/pyright/issues/844
https://github.com/microsoft/pyright/discussions/2033
相关:https://github.com/microsoft/pyright/issues/8441