pylint:使用了可能未定义的循环变量'n

10 投票
2 回答
8868 浏览
提问于 2025-04-15 19:46

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 呢?

撰写回答