все Python 3Арифметика и операторыконструкция
_
присваивание
Подчёркивание _ — имя для ненужного значения по соглашению, шаблон «всё что угодно» в case _, последний результат в REPL и разделитель разрядов в 1_000_000.
Синтаксис
for _ in range(n): ...
first, _, last = triple
case _:
1_000_000
Как переменная _ — обычное имя: Python его не «выбрасывает», значение хранится до следующего присваивания. Это ломает код с gettext, где _ — функция перевода: for _ in range(3) затирает её, и _('текст') падает с TypeError. В match _ — мягкое ключевое слово: case _ совпадает всегда и ничего не связывает, поэтому прежнее значение переменной _ не меняется. В интерактивном интерпретаторе _ хранит результат последнего выражения — но только пока вы сами не присвоили _, после этого механизм молчит. В числах _ разделяет разряды и на значение не влияет.
Примеры
first, _, last = (1, 2, 3)
print(first, last) # → 1 3
print(_) # → 2 — значение не выброшено
print(1_000_000 + 1) # → 1000001
# Python 3.10+
_ = 'старое'
match 42:
case _:
print('совпало') # → совпало
print(_) # → старое — case _ ничего не связывает
import gettext
_ = gettext.gettext
for _ in range(2):
pass
_('Привет') # → TypeError: 'int' object is not callable
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности