On Mon, Jan 5, 2009 at 4:25 AM, Amaury Forgeot d'Arc <amaur...@gmail.com> wrote: > On Mon, Jan 5, 2009 at 00:53, Benjamin Peterson wrote: >> On Sun, Jan 4, 2009 at 5:36 PM, <s...@pobox.com> wrote: >>> >>> >> Since print is now a builtin function why is there still a PRINT_EXPR >>> >> opcode? >>> >>> Benjamin> I believe it's used in the interactive interpreter to display >>> Benjamin> the repr of an expression. >>> >>> Wouldn't it make more sense for the interactive interpreter to call >>> >>> print(repr(expr)) >> >> I'm not sure about the reasoning for keeping PRINT_EXPR alive. When I >> look at the code of PyRun_InteractiveOne, it seems it should be >> possible to kill it off. > > How would you display multiple lines, like: > >>>> for x in range(3): > ... x, x * x > ... > (0, 0) > (1, 1) > (2, 4) >>>> if 1: > ... "some line" > ... "another line" > ... > 'some line' > 'another line' > > OTOH this seems an obscure feature. "for" and "if" are statements after all.
That feature may be obscure but should not be killed. It'd be a bit tricky to remove the PRINT_EXPR call since it doesn't invoke the print() function -- it invokes something more basic that goes through sys.displayhook. I don't care about the opcode, but the semantics should remain unchanged. Keeping the opcode is probably easiest. -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com