Ответ
В Python одиночное подчеркивание (_) — это не специальный синтаксис, а переменная, используемая по соглашению (convention) в нескольких различных сценариях.
-
Игнорирование значения: Используется как "одноразовая" переменная, когда значение не важно и не будет использоваться. Часто встречается при распаковке кортежей или в циклах.
# Игнорируем второй элемент a, _, c = (1, 2, 3) # print(a, c) -> 1 3 # Значение итератора не нужно for _ in range(5): print("Hello, World!") -
Результат последнего выражения в REPL: В интерактивной консоли Python (REPL)
_автоматически хранит результат последнего выполненного выражения.>>> 10 + 5 15 >>> _ * 2 30 -
Соглашение для "внутренних" имен: Префикс
_(например,_internal_var) является соглашением, которое подсказывает другим разработчикам, что переменная или метод предназначены для внутреннего использования в модуле или классе и не являются частью публичного API. -
Локализация и интернационализация (i18n): В библиотеках для перевода, таких как
gettext,_часто используется как псевдоним для функции перевода строк.import gettext gettext.bindtextdomain('myapp', '/path/to/locale') gettext.textdomain('myapp') _ = gettext.gettext print(_('This is a translatable string.')) -
Разделитель в числовых литералах: Начиная с Python 3.6,
_можно использовать для визуального разделения разрядов в числах, что улучшает их читаемость.one_million = 1_000_000 hex_address = 0xFF_EC_DE_5E
Ответ 18+ 🔞
Да ты посмотри, что за хуйня творится в этом вашем Python! Вот этот символ _ — это ж не какая-то магия, а просто переменная, которую договорились использовать по-разному. Как та самая мартышлюшка, которая и в цирке выступает, и на дереве сидит, и бананы жрёт.
Вот, например, когда тебе нахуй не нужно какое-то значение, а выкинуть его нельзя — вот тебе _ в помощь. Как будто говоришь: «Да похуй на это, засунь сюда, лишь бы место заняло».
# Второй элемент? Да нахуй он не нужен!
a, _, c = (1, 2, 3)
# Цикл просто должен пять раз отработать, а счётчик — пусть идёт на хуй
for _ in range(5):
print("Привет, мир, ёпта!")
А в интерактивной консоли — это вообще отдельный цирк. _ там как последний оракул, помнит, что ты только что насчитал. Удобно, блядь, если лень копировать.
>>> 10 + 5
15
>>> _ * 2 # Берём то, что было, и ебём его на два
30
Ещё есть такая хитрая жопа: если назвать переменную с подчёркивания вначале, типа _secret, то это намёк другим программистам, мол, «это внутренняя кухня, не лезь, а то получишь вилкой в глаз». Хотя Python тебя не остановит — он ж не полицай, а язык программирования, блядь.
Для переводчиков текстов — это вообще священная корова. _ у них — это функция, которая строки переводит. Выглядит как будто бы магия, а на деле — просто договорённость, ёпта.
import gettext
_ = gettext.gettext # Вот и вся магия, пизда
print(_('Строка для перевода'))
Ну и наконец, с Python 3.6 можно в числах _ вставлять, как разделитель, чтобы глаза не ебало, когда ты смотришь на миллион нулей. Чисто для красоты, как бантик на манде.
million = 1_000_000 # Смотри, какая красота, блядь!
hex_shit = 0xFF_EC_DE_5E
Вот и вся философия. Никакой ебалы с синтаксисом, просто договорились, чтобы жить было проще. А то без таких соглашений — вообще пиздец, каждый бы писал как бог на душу положит.