On Mar 30, 2:04 am, Nick Gnedin <ngne...@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; > > > > > > > > } -- http://mail.python.org/mailman/listinfo/python-list