Stef Mientki wrote:
Steven D'Aprano wrote:
The best solution is not to re-invent the wheel: "import code" is the way to emulate Python's interactive interpreter.
sorry, but that confuses me even more,

"The code module provides facilities to implement read-eval-print loops in Python. Two classes and convenience functions are included which can be used to build applications which provide an interactive interpreter prompt." IDLE uses it to do just that. File idelib/pyshell.py imports InteractiveInterpreter. A quarter of the file is the definition of
class ModifiedInterpreter(InteractiveInterpreter):

I don;t have a file / module,
just a workspace and one or more lines of code in memory.

The code module has many options. "InteractiveConsole.push(line)
Push a line of source text to the interpreter. "

Anyway, your first post indicated that those 'lines of code in memory' originate from console input, which, I believe, is the default input source for the classes. You will need to experiment to see just how they work.

Doing a search of the file code.py, I don't find the string "eval" at all. My guess is that your approach is probably not the best way.

It would use 'exec' on statements, even if they happen to be expression statements. Exec is not going away. It is a built-in function in 3.0.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to