[Python-Dev] re: division

Greg Ward gward@cnri.reston.va.us
Wed, 5 Apr 2000 09:48:24 -0400


On 04 April 2000, Ka-Ping Yee said:
> On Tue, 4 Apr 2000 gvwilson@nevex.com wrote:
> > (BTW, I think '/' vs. '//' is going to be as error-prone as '=' vs. '==',
> > but harder to track down, since you'll have to scrutinize values very
> > carefully to spot the difference.  Haven't done any field tests,
> > though...)
> 
> My favourite symbol for integer division is  _/
> (read it as "floor-divide").  It makes visually
> apparent what is going on.

Gaackk!  Why is this even an issue?  As I recall, Pascal got it right 30
years ago: / is what you learned in grade school (1/2 = 0.5), div is
what you learn in first-year undergrad CS (1/2 = 0).  Either add a "div"
operator or a "div()" builtin to Python and you take care of the
spelling issue.  (The fixing-old-code issue is another problem
entirely.)  I think that means I favour keeping operator.div and the
__div__() method as-is, and adding operator.fdiv (?) and __fdiv__ for
"floating-point" division.

In other words:

  5 div 3 = 5.__div__(3)  = operator.div(5,3)  = 1
  5 / 3   = 5.__fdiv__(3) = operator.fdiv(5,3) = 1.6666667

(where I have used artistic license in applying __div__ to actual
numbers -- you know what I mean).

-1 on adding any non-7-bit-ASCII characters to the character set
required to express Python; +0 on allowing any (alphanumeric) Unicode
character in identifiers (all for Py3k).  Not sure what "alphanumeric"
means in Unicode, but I'm sure someone has worried about this.

        Greg