Division oddity

Tim Rowe tim at remove_if_not_spam.digitig.co.uk
Tue Jan 13 06:46:07 EST 2004


On 11 Jan 2004 18:15:39 -0800, Paul Rubin
<http://phr.cx@NOSPAM.invalid> wrote:

>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.

That makes sense, thanks.

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

Well, the documentation for "input()" says "Equivalent to
eval(raw_input(/prompt/))". Perhaps it should say "/Usually/
equivalent...."



More information about the Python-list mailing list