What do underscores in a number mean?

Question:

I am wondering why the following variable is treated like a number?

a = 1_000_000
print (a)

1000000

Shouldn’t print(a) return 1_000_000?

Asked By: sophros

||

Answers:

With Python 3.6 (and PEP-515) there is a new convenience notation for big numbers introduced which allows you to divide groups of digits in the number literal so that it is easier to read them.

Examples of use:

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
Answered By: sophros

Python allows you to put underscores in numbers for convenience. They’re used to separate groups of numbers, much like commas do in non-programming. Underscores are completely ignored in numbers, much like comments. So this:

x = 1_000_000

is interpreted to be the same as this:

x = 1000000

However, you can’t put two underscores right next to each other like this:

x = 1__000__000 #SyntaxError

In English speaking countries, commas are generally used as thousand separators, while in many other countries, periods are used as thousand separators. Given the differing conventions, and the fact that both commas and periods are used for other things in Python, it was decided to use underscores as separators.

Answered By: Acccumulation
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.