Подчеркивание _ как имя переменной в Python

У Питера Норвига есть эссе, описывающее программу для решения головоломок судоку, даже самых сложных, путем объединения детерминированных логических операций и умного обхода возможные решения. Последнее выполняется рекурсивно; здесь эта функция (источник):

def search(values):
    "Using depth-first search and propagation, try all possible values."
    if values is False:
        return False ## Failed earlier
    if all( len( values[s]) == 1 for s in squares): 
        return values ## Solved!
    ## Chose the unfilled square s with the fewest possibilities
    _,s = min( (len( values[s]), s) 
                for s in squares 
                if len(values[s]) > 1
            )
    return some( search( assign( values.copy(), s, d)) 
                for d in values[s]
            )

(Я добавил некоторые пробелы, CR и вкладки ради моих глаз, извинения доктору Норвигу.)

В правой части комментария есть строка, начинающаяся с "_,s". Кажется, это распакованный кортеж (len(values[s]),s) с минимальным значением s. Является ли д-р Норвиг "_" как имя переменной, чтобы указать на результат "не заботясь" или что-то еще происходит? Существуют ли случаи, когда "_" рекомендуется в качестве имени переменной? В интерактивном режиме "_" содержит ответ предыдущей операции; есть ли аналогичная функция в неинтерактивном коде?

Update

Спасибо за хорошие ответы. Я думаю, что Ответ идет Alex Martelli за "добавленную стоимость"; он указывает, что идиома "_, vbl_of_interest" часто является побочным эффектом идиомы DSU, что само по себе было в значительной степени ненужным.

Ответ 1

Yep, _ - традиционное имя для "не заботясь" (к сожалению, он сталкивается с его использованием в I18N, но это отдельная проблема;-). BTW, в настоящее время Python, а не:

_,s = min( (len( values[s]), s) 
            for s in squares 
            if len(values[s]) > 1
        )

вы можете указать

s = min((s for s in squares if len(values[s])>1), 
        key=lambda s: len(values[s]))

(не уверен, что пишет питон Питон, но идиома, которую он использует, является примером "decorate-sort-undecorate" [[DSU]], кроме как min вместо сортировки, а в сегодняшнем Python key= необязательный параметр, как правило, лучший способ сделать DSU; -).

Ответ 2

Вы правы. В неинтерактивном режиме _ не имеет особого значения. Действительно, Норвиг просто хочет сообщить, что он не заботится о ценности этой переменной.

Offtopic: Эта статья Норвига очень приятная. Рекомендуемое чтение.

Ответ 3

Ваша интерпретация верна. Вне специального значения в интерактивном режиме _ используется как имя переменной "не заботясь", особенно при распаковке.