Ответ 1
Это просто переменная, как и любая другая, но по соглашению это означает, что вы не собираетесь использовать это значение, просто объявляйте и забывайте об этом.
[OrderedSet() for _ in xrange(n)]
строит список из n пустых упорядоченных множеств. _
является индексом, но не используется; _
обычно используется по мере необходимости, но не используется, имя переменной (не только в python). Это просто сложная идиома python, потому что для этого нет встроенного синтаксиса.
это не редкость видеть это на других языках (где _ - действительный идентификатор). _ часто означает переменную, которая не заинтересована в значении, но которая необходима для синтаксических соображений.
Обратите внимание, что _(...)
как вызов макроса имеет другое условное значение, которое исходит из gettext, где используется _("string literal")
чтобы указать строку, которая нуждается в локализации.
Поток для чтения из ActivesState
Я не могу сказать о каких-либо проблемах, python не использует его внутри, это просто переменная, нам нужно быть осторожным.
ОБНОВИТЬ:
Синтаксис - это * и **. Имена * args и ** kwargs являются только по соглашению, но нет необходимости их использовать.
def my_callbacK_handler(a, b, *_):
...
Итак, что я понимаю, если я вижу эту функцию в вашем коде _ idiom, эта функция использует только аргументы a и b в своей работе и игнорирует другие.
Поскольку вы заявляете "* _ не выражать никакого интереса к каким-либо дополнительным аргументам",