python:检查变量重新定义作为循环变量

时间:2019-03-11 17:31:06

标签: python static-analysis pylint

在python中,您可以通过为循环变量指定在其余代码中已经存在的名称来创建很难发现的错误。

模式如下:

idx = 0 # the result of some calculations

for idx in range(10):
    # do something

# use idx and expect it to be 0
# surprise, idx is actually 9

当然,显而易见的解决方案是拥有更好的变量名。但是,即使使用描述性很强的名称,在代码中的其他位置,相同的名称仍然是一个不错的选择。

尤其是在数字代码中,索引是如此之多,以至于很难追踪。而且变量几乎永远不会超出范围:

for idx in range(10):
    # do something

# idx is now in scope
# autocomplete will suggest idx, but it is still fine as a loop variable
for idx in range(10):
    # do something

是否可以为这个问题设立一个短绒棉呢?

每当我使用一个变量作为在封闭范围内定义的循环变量时,我都希望得到警告。该规则将需要一个范围及其子范围的概念。上面的第一个代码示例应创建一个警告。在第二个示例中,循环变量已经存在于外部范围中,但已在封闭范围的子级中定义。没关系。

0 个答案:

没有答案