for / while else doesn't make sense

Jon Ribbens jon+usenet at unequivocal.co.uk
Sun May 22 20:34:54 EDT 2016


On 2016-05-22, Ben Bacarisse <ben.usenet at bsb.me.uk> wrote:
> Jon Ribbens <jon+usenet at unequivocal.co.uk> writes:
><snip>
>> No, in Python integers are closed under the standard arithmetic
>> operators (+ - * / % **) - except, since Python 3, for "/", which
>> is now a special case.
>
> 2 ** -1 is 0.5 even in Python 2[*].

Haha, excellent, well found. I was wondering if there were any edge
cases I was wrong about. I suppose ideally I would make it so that
2 ** -1 throws an exception or something. But of course this
particular train has left the station a long time ago.

> I agree with your general point (that floats should not pop up unbidden)
> but I don't think you need to exclude the possibly that an operator can
> do that.  With perfect hindsight, I think I'd have had the integers
> closed under operators +, -, *, //, % and (say) ^, whilst making it
> clear that / and ** produce floats.  There's no reason to see this as
> being any less explicit that writing 1.0 as a way to make your intent to
> use floats explicit.

My fundamental point is that floats are surprising, so people should
not be surprised by them arriving unbidden - and most of the time,
there is no need at all for them to turn up unannounced. Making that
occurrence more likely rather than less was a mistake.



More information about the Python-list mailing list