Ответ 1
_
имеет 4 основных традиционных использования в Python:
- Чтобы сохранить результат последнего выполненного выражения (/оператора) в интерактивном сессия переводчика. Этот прецедент был установлен стандартным CPython переводчик и другие переводчики последовали его примеру
- Для поиска перевода в i18n (см.
Gettext
документация, например), как в коде, как:
raise forms.ValidationError(_("Please enter a correct username"))
- Как правило, одноразовое имя переменной для обозначения этой части
результата функции намеренно игнорируется (Концептуально он отбрасывается.), как в коде:
label, has_label, _ = text.partition(':')
. - Как часть определения функции (с использованием
def
илиlambda
), где подпись фиксируется (например, с помощью функции обратного вызова или родительского класса), но эта конкретная реализация функции не нуждается во всех параметры, как в коде, как:callback = lambda _: True
(Долгое время в этом ответе перечислялись только первые три варианта использования, но четвертый случай встречался достаточно часто, как отмечалось здесь, чтобы стоить перечислять его в явном виде)
Последние случаи использования одноразовой переменной или имени параметра могут конфликтовать со случаем использования поиска перевода, поэтому необходимо избегать использования _
в качестве одноразовой переменной в любом блоке кода, который также использует его для перевода i18n (многие люди предпочитают двойное подчеркивание, __
, как их одноразовая переменная именно по этой причине).