Octal number problem

Steven Taschuk staschuk at telusplanet.net
Thu Feb 20 02:22:49 EST 2003


Quoth Carlos Ribeiro:
> On Wednesday 19 February 2003 23:34, Chad Netzer wrote:
> > yes; eval("010") == 8
> >
> > however,
> >
> > int("010") = 10
> 
> I may be mistaken (and someone probably will be more than happy to tell me 
> why), but this inconsistence alone seems like a good reason to deprecate 
> octals (if only in Python 3000!). It really makes no sense to have 
> eval("010") != int("010").

Well, it makes sense to me, for whatever that's worth.

A user-typed string probably demands the decimal interpretation,
because users generally don't know any other base.  Likewise for
human-readable data formats which might have prepended zeroes for,
say, sorting purposes.

For the programmer who's doing bit manipulations, however, octal
and hex notations are very useful.  For example,
	x & 0x0ff0
obviously extracts eight contiguous bits from x, while the decimal
equivalent
	x & 4080
is somewhat mysterious.  (For a real-life case, consider a UTF-8
(en|de)coder.)

So, having the parser do something different than int() makes
sense; they have different audiences, with different needs.

-- 
Steven Taschuk             "The world will end if you get this wrong."
staschuk at telusplanet.net    (Brian Kernighan and Lorrinda Cherry,
                            "Typesetting Mathematics -- User's Guide")





More information about the Python-list mailing list