2014-02-18 3 views
2

В Python 3.x я вызываю функцию rand_foo(), которая при каждом вызове возвращает случайный материал. Я хочу сохранить последовательность случайных результатов в списке. Я использую следующую конструкцию:Локальная переменная необходима для понимания Python?

r = [ rand_foo() for i in range(10) ] 

Теперь мой PyCharm 3,0 IDE держит предупреждение: Local variable 'i' value is not used.

Есть ли элегантный способ удаления ненужной переменной? Действительно, в некоторых случаях я мог бы использовать itertools.repeat() или что-то вроде 10*[value], которое, однако, не может быть применено к моему примеру выше.

+1

Я бы рассмотреть его быть ошибкой в ​​PyCharm. Очень часто это выражение выражается в коде Python, и вам не нужно прыгать через обручи, чтобы избежать глупого предупреждения. –

ответ

10

Конвенция, если переменная не используется, чтобы использовать подчеркивание вместо:

r = [rand_foo() for _ in range(10)] 

Смотрите, например: Underscore _ as variable name in Python

Я считаю, что это будет подавлять предупреждение PyCharm

+2

+1, но одно предупреждение: Есть несколько библиотек, в первую очередь модуль ['gettext'] (http://docs.python.org/3/library/gettext.html) i18n в stdlib, которые предоставляют специальное значение для '_', и если вы используете один из них, ваш linter (или человек-читатель) может пожаловаться на то, что вы затеняете глобальный' _' локальным с тем же именем ... (И, конечно, если ваше выражение на самом деле пытается _use_ 'gettext', вы не можете этого сделать.) – abarnert

+1

Какой ужасный выбор! – mhlester

+1

Модуль 'gettext' Python представляет собой оболочку библиотеки C get, которая является стандартом de facto с начала 90-х годов и использует' _ ("string to localize") ', чтобы сигнализировать, что строка должна быть локализованным. И привязки perl, sh, Smalltalk и т. Д. Для 'gettext' уже использовали тот же синтаксис' _'. Так что выбора действительно не было ... – abarnert

Смежные вопросы