Numeric literal syntax

Alexander Schmolck a.schmolck at
Thu Sep 4 02:22:22 CEST 2008

Ben Finney <bignose+hates-spam at> writes:

> bearophileHUGS at writes:
>> For Python 2.7/3.1 I'd now like to write a PEP regarding the
>> underscores into the number literals, like: 0b_0101_1111, 268_435_456
>> etc.
> +1 on such a capability.
> -1 on underscore as the separator.
> When you proposed this last year, the counter-proposal was made
> <URL:>
> to instead use white space for the separator, exactly as one can now
> do with string literals.
> I don't see any good reason (other than your familiarity with the D
> language) to use underscores for this purpose, and much more reason
> (readability, consistency, fewer arbitrary differences in syntax,
> perhaps simpler implementation) to use whitespace just as with string
> literals.

It seems to me that the right choice for thousands seperator is the
apostrophe. It doesn't suffer from brittleness and editing problems as
whitespace does (e.g. consider filling and auto-line breaking). It is already
used in some locales for this function but never for the decimal point (so no
ambiguity, unlike '.' and ','). It also reads well, unlike the underscore
which is visually obstrusive and ugly (compare 123'456'890 to 123_456_789).

Having said that, I'd still have 123_456_789 over 123456789 any day. 

It's amazing that after over half a century of computing we still can't denote
numbers with more than 4 digits readably in the vast majority of contexts.


More information about the Python-list mailing list