dir() vs print(dir()) in the embedded mode

rusi rustompmody at gmail.com
Sat Mar 30 06:52:28 CET 2013


On Mar 30, 2:04 am, Nick Gnedin <ngne... at gmail.com> wrote:
> Folks,
>
> I have a newbie question: I am trying to embed Python into my
> application. While playing around, I noticed that the behavior of the
> interpreter in the embedded mode differs from the standalone one.
>
> Namely, in the standalone mode if I type dir(), I get a list of build-in
> symbols. In the embedded mode only print(dir()) does that, while just
> dir() returns silently.

This:
http://docs.python.org/2/library/custominterp.html
is (or can be conceptualized as providing) the interactive interpreter
behavior.
IOW the interactive interpreter (aka REPL) is a packaging of that.

>
> Is there a way to intercept the output of dir() (and all other commands)
> and display them to the user?

You are looking at it upside down (as MRAB hinted).
You dont want to intercept (aka monkeypatch or subtract) from a
functional ie value-returning dir etc
Instead you want to add (your own custom) REPL behavior.

>
> Here is an example code that illustrates the behavior (the first call to
> PyRun_SimpleString() returns silently).
>
> Many thanks for your future hints,
>
> Nick
>
> #include <Python.h>
>
> int main()
> {
>    Py_Initialize();
>    PyRun_SimpleString("dir()");
>    printf("-----\n");
>    PyRun_SimpleString("print(dir())");
>    Py_Finalize();
>
>    return 0;
>
>
>
>
>
>
>
> }




More information about the Python-list mailing list