dir() vs print(dir()) in the embedded mode
rusi
rustompmody at gmail.com
Sat Mar 30 01:52:28 EDT 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