pylint: возможно использование неопределенной переменной цикла 'n' - PullRequest
6 голосов
/ 26 февраля 2010

Пилинт говорит

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)) не лучший выбор, потому что вы должны сделать два цикла. Используя счетчик и увеличивая его, я думаю, что он не очень питонический.

Ответы [ 2 ]

9 голосов
/ 26 февраля 2010

Рассматривали ли вы просто инициализацию n значением None перед запуском цикла?

3 голосов
/ 26 февраля 2010

Определите значение по умолчанию для n перед оператором for:

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
...