[Python-ideas] 1_000_000
Steven D'Aprano
steve at pearwood.info
Sat May 7 04:00:11 CEST 2011
Bruce Leban wrote:
> Consider these examples instead:
>
> - 1_234_000
> - 9.876_543_210
> - 0xFEFF_0042
>
> I'm not advocating this change (nor against it); I just think the discussion
> should be focused on the actual idea. I do have a question:
>
> Is _ just ignored in numbers or are there more complex rules?
>
> - 1_2345_6789 (can I use groups of other sizes instead?)
> - 1_2_3_4_5 (ditto)
> - 1_234_6789 (do all the groups need to be the same size?)
+1 on all of these. I don't particularly like the look of _ as a number
separator, but it's hard to think of any alternatives other than space,
and some separator is better than long sequences of digits.
I'm -0.5 on spaces even though it looks MUCH better, because it's too
easy to leave the commas out in lists etc:
L = [1, 2, 3, 4 5, 6, 7, 8, 9, 10] # oops, wanted 4 & 5 not 45
(Admittedly if the items where strings, the same failure mode applies.)
> - 1_ (must the _ only be in between 2 digits?)
> - 1__234 (what about multiple _s?)
-1 on allowing either _1 or 1_ as numbers.
-0 on allowing doubled underscores.
> - 9.876_543_210 (can it be used to the right of the decimal point?)
> - 0xFEFF_0042 (can it be used in hex, octal or binary numbers?)
+1 on these two.
> - int('123_456') (do other functions accept this syntax too?)
That's a tricky one... I'd say No, but I'm not entirely sure. It's easy
enough to say:
int('123_456'.replace('_', ''))
albeit a tad verbose. Also easy to say:
int('123' '456')
which is less verbose. And it will change the behaviour of the int
function. So I don't think we need to support separators inside strings.
We can always change our mind later and add it in, but it's much harder
to take it out later.
--
Steven
More information about the Python-ideas
mailing list