Что означает подчеркивание в числе?

Мне интересно, почему следующая переменная рассматривается как число?

a = 1_000_000
print (a)

1000000

Не должен ли print(a) вернуть 1_000_000?

Ответ 1

В Python 3.6 (и PEP-515) появилась новая удобная запись для больших чисел, которая позволяет разделять группы цифр в числовом литерале, чтобы их было легче читать.

Примеры использования:

a = 1_00_00  # you do not need to group digits by 3!
b = 0xbad_c0ffee  # you can make fun with hex digit notation
c = 0b0101_01010101010_0100  # works with binary notation
f = 1_000_00.0
print(a,b,c,f)

10000

50159747054

174756

100000,0

print(int('1_000_000'))
print(int('0xbad_c0ffee', 16))
print(int('0b0101_01010101010_0100',2))
print(float('1_000_00.0'))

1000000

50159747054

174756

100000,0

A = 1__000  # SyntaxError: invalid token

Ответ 2

Python позволяет вам ставить подчеркивания в числах для удобства. Они используются для разделения групп чисел, очень похоже на запятые в непрограммировании. Подчеркивания в цифрах полностью игнорируются, как и комментарии. Итак, это:

x = 1_000_000

интерпретируется так же, как это:

x = 1000000

Тем не менее, вы не можете поставить два подчеркивания рядом друг с другом, как это:

x = 1__000__000 #SyntaxError

Ответ 3

В англоязычных странах запятые обычно используются в качестве разделителей тысяч, а во многих других странах точки используются в качестве разделителей тысяч. Учитывая разные соглашения и тот факт, что запятые и точки используются в Python для других целей, было решено использовать подчеркивания в качестве разделителей.