pylint:使用了可能未定义的循环变量'n
Pylint 提示说
W: 6: Using possibly undefined loop variable 'n'
... 这个代码有问题:
iterator = (i*i for i in range(100) if i % 3 == 0)
for n, i in enumerate(iterator):
do_something(i)
print n
因为如果这个迭代器是空的(比如说 []
),那么 n
就没有定义,这样是没问题的。但是我喜欢这个技巧。那怎么才能安全地使用它呢?
我觉得用 len(list(iterator))
不是最好的选择,因为这样会进行两次循环。我觉得用计数器并不断增加它的值也不是很符合 Python 的风格。
2 个回答
5
在for
语句之前给n
设置一个默认值:
iterator = (i*i for i in range(100) if i % 3 == 0)
n=None
for n, i in enumerate(iterator):
do_something(i)
print n
15
你有没有想过在运行循环之前,先把 n
设置为 None
呢?