加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – PyLint:使用可能未定义的循环变量警告

发布时间:2020-12-20 11:41:45 所属栏目:Python 来源:网络整理
导读:阅读 this question 后,我可以理解为什么可能输出这个警告,但是当循环变量不能被定义时我有一个特定的情况…… for i in range(0,2): print iprint i PyLinting以上我得到了 W: 4,6: Using possibly undefined loop variable 'i' PyLint是不是很聪明,不会注
阅读 this question后,我可以理解为什么可能输出这个警告,但是当循环变量不能被定义时我有一个特定的情况……

for i in range(0,2):
    print i

print i

PyLinting以上我得到了

W:  4,6: Using possibly undefined loop variable 'i'

PyLint是不是很聪明,不会注意到内置的range()函数在这种情况下总会生成一个填充列表,因此我将始终为最后一个print语句设置?我可以理解它是否是一个定义不足的函数,因为PyLint不可能知道函数的作用……但在这种情况下它是一个众所周知的函数,当然这种用法会很常见吗?

如果是这样,最好是在循环之前抑制警告或定义i(这看起来很浪费)?

解决方法

这是因为你的范围可能是空的,这取决于所涉及的中间执行步骤,或者它可能在代码中被重新定义,如@tobias_k所指出的那样(尽管这会引发额外的W:1,0:重新定义内置’范围’ (重新定义的内置)),因此,变量i可能无法定义.

请注意,pylint根本不执行代码,它只进行静态分析,因此不会检查范围内的值.因此,当它看到在一个for block中定义的变量被重用时可能超出范围时,它会抱怨.

考虑下面的示例,其中pylint显示相同的警告,但一个运行,而另一个抛出异常:

W:  4,6: Using possibly undefined loop variable 'i' (undefined-loop-variable)

示例(不工作):

$cat test.py 
for i in range(0):
        print i        
print i

$python test.py 
Traceback (most recent call last):
  File "test.py",line 4,in <module>
    print i
NameError: name 'i' is not defined

示例(工作):

$cat test.py 
for i in range(0,2):
        print i
print i

$python test.py 
0
1
1

作为你的问题的答案,抑制警告是否更好,我的回答是否定的.如果您确实要禁止它,请确保在相关代码块之后重新启用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读