python的for语句中i未被定义_python – PyLint:使用可能未定义的循环变量警告
閱讀this question后,我可以理解為什么可能輸出這個(gè)警告,但是當(dāng)循環(huán)變量不能被定義時(shí)我有一個(gè)特定的情況……
for i in range(0, 2):
print i
print i
PyLinting以上我得到了
W: 4,6: Using possibly undefined loop variable 'i'
PyLint是不是很聰明,不會(huì)注意到內(nèi)置的range()函數(shù)在這種情況下總會(huì)生成一個(gè)填充列表,因此我將始終為最后一個(gè)print語句設(shè)置?我可以理解它是否是一個(gè)定義不足的函數(shù),因?yàn)镻yLint不可能知道函數(shù)的作用……但在這種情況下它是一個(gè)眾所周知的函數(shù),當(dāng)然這種用法會(huì)很常見嗎?
如果是這樣,最好是在循環(huán)之前抑制警告或定義i(這看起來很浪費(fèi))?
解決方法:
這是因?yàn)槟愕姆秶赡苁强盏?這取決于所涉及的中間執(zhí)行步驟,或者它可能在代碼中被重新定義,如@tobias_k所指出的那樣(盡管這會(huì)引發(fā)額外的W:1,0:重新定義內(nèi)置’范圍’ (重新定義的內(nèi)置)),因此,變量i可能無法定義.
請(qǐng)注意,pylint根本不執(zhí)行代碼,它只進(jìn)行靜態(tài)分析,因此不會(huì)檢查范圍內(nèi)的值.因此,當(dāng)它看到在一個(gè)for block中定義的變量被重用時(shí)可能超出范圍時(shí),它會(huì)抱怨.
考慮下面的示例,其中pylint顯示相同的警告,但一個(gè)運(yùn)行,而另一個(gè)拋出異常:
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
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
作為你的問題的答案,抑制警告是否更好,我的回答是否定的.如果您確實(shí)要禁止它,請(qǐng)確保在相關(guān)代碼塊之后重新啟用它.
標(biāo)簽:python,pylint
來源: https://codeday.me/bug/20190728/1559280.html
總結(jié)
以上是生活随笔為你收集整理的python的for语句中i未被定义_python – PyLint:使用可能未定义的循环变量警告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曝摩托罗拉G Stylus 5G (20
- 下一篇: 首次!曝vivo X Flip将用交错纹