[docs] [issue34115] code.InteractiveConsole.interact() closes stdin
report at bugs.python.org
Sat Jul 21 17:14:35 EDT 2018
Yonatan Zunger <zunger at humu.com> added the comment:
Definitely agree about the difference.
I'd say that either SystemExit or EOFError would be a reasonable thing for
the interactive session to do, but the combination of closing stdin and
SystemExit is really weird. Honestly, I would have just expected interact()
to return like an ordinary function when it was done; the logic of "it's
time to close the terminal window" feels like it belongs at a *much* higher
level of the stack.
On Fri, Jul 20, 2018 at 10:16 PM Terry J. Reedy <report at bugs.python.org>
> Terry J. Reedy <tjreedy at udel.edu> added the comment:
> There is an important difference between a program saying 'I am done
> executing' and a user saying 'I am done with the interactive session'.
> This is especially true in an IDE where 'session' can include many editing
> and shell sessions.
> 'Stop executing' happens when execution reaches the end of the file,
> which causes EOFError upon a read attempt. It can also be done gracefully
> before the end of input with sys.exit(), which raises SystemExit.
> In Interactive Python, 'leave session' can be done with SystemExit or the
> EOF control signal, which appears to raise EOFError. This suggests that
> quit() and exit(), which were added because newbies did not know the proper
> way to exit, should raise EOFError rather than SystemExit. The fact that
> 'quit' displays 'Use quit() or Ctrl-Z plus Return to exit' (EOF on Windows)
> suggests the same. But I need to experiment (another day).
> Python tracker <report at bugs.python.org>
Python tracker <report at bugs.python.org>
More information about the docs