[Python-3000] Fwd: Re: Octal

Patrick Maupin pmaupin at gmail.com
Wed Mar 14 21:12:43 CET 2007


On 3/14/07, Raymond Hettinger <python at rcn.com> wrote:
>
> - In 3.0, we don't want an exception.  With floats and decimals, leading zeroes are allowed (i.e.  0.123).  In 3.0, I would like the leading zero distinction to disappear from our collective memory.  Somelike like eval('00987') should give 987, not an exception.  The use cases for zfill() correspond to the cases where leading zeros are meaningfully interpreted as decimals (this includes phone and social security numbers, account numbers, and whatnot).

This is the only part I'm not sure I agree with. I agree it would be
nice if there were no collective memory, but it is etched into the
collective memory, and anybody who uses C or some other language as
well as Python is living that collective memory on a daily basis and
could easily do the wrong thing (either in Python or in the other
language).  We are removing the ability to specify an octal number via
a leading 0, because it caused confusion.  I think adding the ability
to specify a decimal number with a leading 0 has the potential to
cause confusion in a completely different group of users.  And it
doesn't seem to be something people are clamoring for in a major way.

In fact, I would go so far as to argue that the behavior of int()
should be changed as well:

    int('012')       -> exception (used to return 12)
    int('012', 0)   -> exception (used to return 10)
    int('012', 10) -> should return 12, like always

So for your use-cases:  1) you shouldn't hard code an SSN into the
program; 2) you shouldn't use eval() on user data; and 3) you should
call int() with a second parameter of 10 to get what you want.

Regards,
Pat


More information about the Python-3000 mailing list