Division oddity

Paul Rubin http
Sun Jan 11 21:15:39 EST 2004


Tim Rowe <tim at remove_if_not_spam.digitig.co.uk> writes:
> If I do from __future__ import division then eval(1/2) gives me 0.5 as
> expected. But if I do print input("enter a sum: ") and enter 1/2 as
> the sum I get 0 as if I hadn't done the import.  I thought input was
> supposed to give the same behaviour as an eval on raw input -- why the
> difference here?

The input function is calling eval from the context of the module
where 'input' itself is defined.  If you use "from __future__ import
division" in module A and have "print 3/2" in module B, the value of
3/2 in module B shouldn't be affected by the input, since module B
may depend on integer division having the old behavior.

The result is a little bit surprising at first glance though, so it
should probably be documented.



More information about the Python-list mailing list