FAQ
I've built a Python app for the iPhone, http://www.sabonrai.com/PythonMath/.

Like embedding Python in another app, it uses PyRun_SimpleString() to
execute commands entered by the user. For evaluating expressions, it
uses PyEval_EvalCode() with the dictionary from the __main__ module.

Future division ("from __future__ import division") works within
scripts executed by import or execfile(). However, it does not work
when entered interactively in the interpreter like this:
from __future__ import division
a=2/3
You get classic (integer) division, but if you enter it as follows,
you get future (float) division.
from __future__ import division;a=2/3
It appears that the CO_FUTURE_DIVISION compiler flag is not being
retained in the interpreter so that later commands get compiled
without that flag.

I found a hint in
http://groups.google.com/group/comp.lang.python/browse_thread/thread/13a90a9f6eb96c73/960e47f572a59711?lnk=gst&q=co_future_division#960e47f572a59711,
but I don't see that PyRun_SimpleStringFlags returns the flags it
uses. I guess I could watch for the user to enter the import command
but that's really brittle.

Thanks.

Search Discussions

  • Hrvoje Niksic at Jul 2, 2011 at 7:55 pm

    Terry <twestley at gmail.com> writes:

    Future division ("from __future__ import division") works within
    scripts executed by import or execfile(). However, it does not work
    when entered interactively in the interpreter like this:
    from __future__ import division
    a=2/3
    Are you referring to the interactive interpreter normally invoked by
    just running "python"? That seems to work for me:

    Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
    [GCC 4.5.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    2/3
    from __future__ import division
    2/3
    0.6666666666666666
  • Terry at Jul 3, 2011 at 12:07 am

    On Jul 2, 3:55?pm, Hrvoje Niksic wrote:
    Terry <twest... at gmail.com> writes:
    Future division ("from __future__ import division") works within
    scripts executed by import or execfile(). However, it does not work
    when entered interactively in the interpreter like this:
    from __future__ import division
    a=2/3
    Are you referring to the interactive interpreter normally invoked by
    just running "python"? ?That seems to work for me:

    Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
    [GCC 4.5.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.>>> 2/3
    from __future__ import division
    2/3
    0.6666666666666666
    Yes, that works for me on my Mac. The problem I'm having is in a
    Python interpreter that I built for the iPhone. It uses
    PyRun_SimpleString() to execute user entered commands. After you
    import future division, it does not seem to remember it on subsequent
    commands.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedJul 2, '11 at 4:29p
activeJul 3, '11 at 12:07a
posts3
users2
websitepython.org

2 users in discussion

Terry: 2 posts Hrvoje Niksic: 1 post

People

Translate

site design / logo © 2022 Grokbase