[Tutor] Why does 01 give a syntax error, but 00 (or 00...0) does not?

boB Stepp robertvstepp at gmail.com
Sun Mar 6 01:28:45 EST 2016


On Sat, Mar 5, 2016 at 11:32 PM, Steven D'Aprano <steve at pearwood.info> wrote:
> On Sat, Mar 05, 2016 at 05:20:21PM -0600, boB Stepp wrote:
>
>> Why do zeros not give a syntax error, but other numbers with a leading
>> zero do give a syntax error?  An online search reveals that in Python
>> 2 a leading 0 starts an octal number, but this was changed in Python
>> 3.  But then why is 00...0 valid, that is, does not give a syntax
>> error?
>
> No reason. It's just a historical accident, and with no real harm done,
> people decided it's not worth fixing:
>
> http://bugs.python.org/issue24668

Hmm.  Thanks, Steve, as well as your detailed answer to the other
question I posed tonight.  On this thread, I am curious about one of
the statements in the bug report you linked to:

<quote>
Author: Georg Brandl
[...]

Since the direction we're going is to allow leading zeros for all
decimal literals in Python 4 (if it ever comes around), that's another
reason for the status quo to win.
</quote>

Sounds like, in retrospect, Python 3 should have had this behavior
implemented, but I am guessing that it was thought more important to
emphasize the new octal literal syntax in Py 3 and eliminate the
leading zero entirely (except for the special case of zero, which must
have slipped through the cracks somehow).


-- 
boB


More information about the Tutor mailing list