PEP0238 lament

David Eppstein eppstein at ics.uci.edu
Mon Jul 23 19:12:13 EDT 2001


In article <WV177.36940$Cy.4447774 at news1.rdc1.az.home.com>,
 "Tim Hochberg" <tim.hochberg at ieee.org> wrote:

> Which is not too horrible, but it is extra cruft. So let me turn your
> question around. Can you give an example where you want the type of division
> (float vs floor) to change depending on the type of input (int, float,
> complex)? I can't, although I suspect there must be some. I also suspect
> they're very rare.

Rather than arguing about nonexistent situations, let's make an analogy:
In Python, "123"+"456" = "123456" but 123+456=579.  These are two different 
operators that happen to have the same symbol.  I really don't see why 
integer-division and floating-point-division should be treated any 
differently from this case.

Maybe it would have been more type-safe to have defined a language in which
string concatenation was defined by some other symbol ++, so that 
"123"++"456" would equal "123456" but "123"+"456" would automagically 
coerce the arguments into integers and return 579.  You could argue either 
way on the abstract merits of such a language.  But that's not the language 
we have now, the automagic coercion violates the "better explicit than 
implicit" principle, and there are too many calls to the 
string-concatenation '+' operator to change them without great pain.

Another possible step instead of breaking integer division would be to add 
a warning for any int/float or float/int division, to make it more explicit 
that the two kinds of division are different and that you need to make up 
your mind which one you want to do.  Take out all the automagic and make 
people use explicit casts.
-- 
David Eppstein       UC Irvine Dept. of Information & Computer Science
eppstein at ics.uci.edu http://www.ics.uci.edu/~eppstein/



More information about the Python-list mailing list