Какова цель единственной подчеркивания "_" в Python? - PullRequest
548 голосов
/ 05 мая 2011

Что означает _ после for в этом коде?

if tbh.bag:
   n = 0
   for _ in tbh.bag.atom_set():
      n += 1

Ответы [ 4 ]

693 голосов
/ 05 мая 2011

_ имеет 3 основных традиционных использования в Python:

  1. Для удержания результата последнего выполненного выражения (/ оператора) в интерактивном сессия переводчика. Этот прецедент был установлен стандартным CPython переводчик и другие переводчики последовали его примеру
  2. Для поиска перевода в i18n (см. Gettext документация, например), как в коде, как: raise forms.ValidationError(_("Please enter a correct username"))
  3. В качестве «одноразового» имени переменной общего назначения для обозначения этой части результата функции намеренно игнорируется (Концептуально он отбрасывается.), как в коде: label, has_label, _ = text.partition(':')

Последние две цели могут конфликтовать, поэтому необходимо избегать использования _ в качестве одноразовой переменной в любом блоке кода, который также использует ее для перевода i18n (многие люди предпочитают двойное подчеркивание, __, поскольку их по этой причине одноразовая переменная).

180 голосов
/ 05 мая 2011

Это просто имя переменной, и в python принято использовать _ для одноразовых переменных. Это просто указывает на то, что переменная цикла на самом деле не используется.

57 голосов
/ 01 декабря 2017

Подчеркивание _ рассматривается как переменная " Мне все равно * " или " Throwaway " в Python

  • Интерпретатор python сохраняет последнее значение выражения в специальной переменной с именем _.

    >>> 10 
    10
    
    >>> _ 
    10
    
    >>> _ * 3 
    30
    
  • Подчеркивание _ также используется для игнорирования определенных значений. Если вам не нужны конкретные значения или значения не используются, просто присвойте значения подчеркиванию.

    Игнорировать значение при распаковке

    x, _, y = (1, 2, 3)
    
    >>> x
    1
    
    >>> y 
    3
    

    Игнорировать индекс

    for _ in range(10):     
        do_something()
    
16 голосов
/ 13 марта 2018

В Python есть 5 вариантов использования подчеркивания.

  1. Для хранения значения последнего выражения в интерпретаторе.

  2. Для игнорирования определенных значений. (так называемое «мне все равно»)

  3. Для придания специальных значений и функций именам переменных или функций.

  4. Для использования в качестве функций "Интернационализация (i18n)" или "Локализация (l10n)".

  5. Для разделения цифр числового литерала.

Здесь - хорошая статья с примерами mingrammer .

...