为什么在这个简单的python函数中,Pyright有一个未绑定的可变错误警告

问题描述 投票:0回答:2

因为

def f(): for i in range(4): a = 1 print(a) return a
可能是空的(如果您覆盖内置的
range(4)
python warnings static-analysis pyright unbound
2个回答
26
投票
也许您可以告诉您的IDE忽略这一点,而不显示警告。或分配一些有意义的默认值the循环之前。

LETS弹弓有点回:Python允许使用其他语言的本地和未结合变量(例如Java,C,JavaScript,...)您必须提供一个值。
在Python中,知道
range
是否会受到
a
逻辑的束缚取决于返回的迭代器。可能不会返回一个值。

我们可能期望像

a

x

0
投票
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= noneaaste trom thouripliblibly unover也是一个设置的设置。


参考:

https://github.com/microsoft/pyright/issues/844


https://github.com/microsoft/pyright/discussions/2033

相关:
https://github.com/microsoft/pyright/issues/8441

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.