Why Python 3?

Gregory Ewing greg.ewing at canterbury.ac.nz
Mon Apr 21 18:28:57 EDT 2014


Chris Angelico wrote:
> All other basic arithmetic operations on two numbers of the same type
> results in another number of that type. ... There's
> just one special case: dividing an integer by an integer yields a
> float, if and only if you use truediv. It sticks out as an exception.

I take your point, but I think this is a case where
practicality beats purity by a large margin. The idea
that arithmetic should always give a result of the same
type is all very nice in theory, but it just isn't
practical where division is concerned.

The reason it doesn't work well is because of the
automatic promotion of ints to floats when they meet
other floats. This leads to a style where people often
use ints to stand for int-valued floats and expect
them to be promoted where necessary.

Things would be different if ints and floats were
completely separate types, like str and bytes, but
that would be extremely inconvenient. I used a language
like that once, and it wasn't a pleasant experience.

-- 
Greg



More information about the Python-list mailing list