On Sat, 19 Nov 2005 13:08:57 -0500, Peter Hansen wrote: > Umm... in other words, "the underscore is under-used so let's assign > some arbitrary meaning to it" (to make the language more like Perl > perhaps?).
+1 I *really* don't like the idea of allowing underscores in numeric literals. Firstly, for aesthetic reasons: I think 123_456 is seriously ugly. Secondly, for pragmatic reasons, I think it is too easy to mistype as 123-456. I know that Python can't protect you from typing 9-1 instead of 901, but why add special syntax that makes that sort of error MORE common?) > Or maybe one should instead interpret this as "numeric literals need > more bells and whistles, and I don't care which of these two we add, but > we have to do *something*!". :-) -1 That's a tad unfair. Dealing with numeric literals with lots of digits is a real (if not earth-shattering) human interface problem: it is hard for people to parse long numeric strings. In the wider world outside of IT, people deal with long numeric digits by grouping. This is *exceedingly* common: mathematicians do it, economists do it, everybody who handles long numeric literals does it *except* computer language designers. Depending on personal preference and context, we use any of comma, period, dash or space as a separator. Underscore is never used. Of these, the comma clashes with tuples, the period opens a rather large can of worms vis-a-vis internationalisation, and the dash clashes with the minus sign. Allowing spaces to group digits is subtle but effective, doesn't clash with other syntax, and is analogous to string concatenation. I don't believe it is either practical or desirable for a computer language to accept every conceivable digit separator in literals. If you need full support for internationalised numbers, that should go into a function. But the question of including a digit separator for numeric literals does solve a real problem, it isn't just meaningless bells and whistles. Likewise, base conversion into arbitrary bases is not, in my opinion, common enough a task that support for it needs to be built into the syntax for literals. If somebody cares enough about it, write a module to handle it and try to get it included with the Python standard modules. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list