Terry Reedy wrote:
On 4/19/2014 9:06 PM, Gregory Ewing wrote:

Similarly, when you write // you're explicitly requesting
integer division.

One is requesting 'floor division'

 >>> 3.0//2.0
1.0

In general that's true, but I'm talking about a context
in which you have some expectations as to the types of the
operands.

Most of the time, there are two possible scenarios:

1) The algorithm operates on integers, and the contract is
that you only get passed ints. In that case, you use //
and know that the result will be an int.

2) The algorithm operates on non-integers, and the contract
is that you get passed either ints or floats, with ints being
understood as standing in for floats. In that case, you
use / and know that it will perform float division and
return a float.

If someone passes you a float in case (1) it's true that
// won't return an int, but then they've violated the
contract.

--
Greg
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to