В python существует эквивалент "pass" для присваивания переменной
Я использую библиотечную функцию с именем get_count_and_price, которая возвращает 2-кортеж (count, price). Во многих местах я использую как время, так и цену. Однако в некоторых мне нужно только время или цена. Так что прямо сейчас, если мне нужен только счет, я назначаю (количество, цену) и оставляю цену неиспользованной.
Это отлично работает и не вызывает никаких проблем само по себе.
Однако...
Я использую Eclipse с PyDev, а новая версия 1.5 автоматически показывает ошибки и предупреждения. Одно из предупреждений, которое он показывает, это неиспользуемые переменные. В приведенном выше примере цена флага считается неиспользованной. Это великое поведение, и я действительно ценю, как PyDev делает это для меня. Тем не менее, я хотел бы пропустить задание на цену в целом. В идеале мне бы хотелось что-то вроде:
(count,None) = get_count_and_price()
Теперь, как мы все знаем, никто не может быть назначен. Есть ли что-то еще, что я мог бы сделать в этом случае?
Я знаю, что могу сделать что-то вроде
count = get_count_and_price()[0]
но я прошу только посмотреть, есть ли у кого-нибудь лучшие предложения.
Ответы
Ответ 1
Я думаю, что нет ничего плохого в использовании индекса [0], но иногда люди используют переменную "throwaway" _. Это фактически так же, как и любая другая переменная (с особым использованием в консоли), за исключением того, что некоторые пользователи Python решили, что это будет "выбросить" в качестве соглашения.
count, _ = get_count_and_price()
О проблеме PyDev вы должны просто использовать индекс [0] в любом случае. Но если вы действительно хотите использовать _, единственным решением является отключить предупреждения неиспользуемой переменной, если это вас беспокоит.
Ответ 2
Использование _
по отдельности может иметь некоторые проблемы (хотя в основном это нормально). По правилам стиля Python, которые я использую на работе, я обычно использую count, unused_price = ...
, поскольку pylint настроен на игнорирование присвоений именам, начинающимся с unused_
(и вместо этого предупреждает об использовании любого такого имени bar!). Но я не знаю, как приказать PyDev
вести себя таким образом!
Ответ 3
Если вы перейдете в окно Eclipse → Preferences..., вы можете указать, какие имена переменных PyDev должны игнорировать, если они не используются (я смотрю на новейший PyDev 1.5.X).
Если вы перейдете в PyDev → Редактор → Анализ кода и посмотрите на последнее поле, в котором говорится: "Не сообщайте неиспользуемую переменную, если имя начинается с"
Введите любые имена, которые вы хотите там, а затем используйте это имя, чтобы ограничить имена переменных, которые PyDev будет игнорировать неиспользуемые предупреждения.
По умолчанию похоже, что PyDev скрывает неиспользуемые предупреждения переменных для любых переменных, имена которых начинаются с "dummy", "_" или "unused".
Как сказал @TokenMacGuy ниже, я бы рекомендовал не использовать только "_", потому что он имеет особое значение в некоторых сценариях на Python (в частности, он используется в интерактивном интерпретаторе).
Ответ 4
Мы часто это делаем.
count, _ = get_count_and_price()
или
count, junk = get_count_and_price()
Ответ 5
Я бы скорее назвал его _price
, по этим причинам:
-
Он разрешает конфликт с gettext и интерактивным приглашением, в котором используются _
-
Легко вернуться в price
, если вам это нужно позже.
-
Как отмечали другие, ведущее подчеркивание уже имеет коннотацию "внутреннего" или "неиспользуемого" на многих языках.
Итак, ваш код будет выглядеть следующим образом:
(count, _price) = get_count_and_price()
Ответ 6
Я пойду после значка Некроманта.:)
Вы сказали, что используете PyDev. В PyDev (по крайней мере, в последних версиях - я не проверял, как далеко назад) любое имя переменной, начинающееся с "unused", будет освобождено от предупреждения "Неиспользуемая переменная". Другой инструмент статического анализа может все еще жаловаться, хотя (pyflakes делает - но, похоже, он все равно игнорирует это предупреждение в контексте распаковки).