[Python-Dev] Why is there still a PRINT_EXPR opcode in Python 3?

Amaury Forgeot d'Arc amauryfa at gmail.com
Mon Jan 5 13:25:14 CET 2009


On Mon, Jan 5, 2009 at 00:53, Benjamin Peterson wrote:
> On Sun, Jan 4, 2009 at 5:36 PM,  <skip at 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.

-- 
Amaury Forgeot d'Arc


More information about the Python-Dev mailing list