On Mon, Jun 15, 2020 at 8:31 PM Steven D'Aprano <st...@pearwood.info> wrote:

> On Fri, Jun 12, 2020 at 09:01:33AM +0100, Rob Cliffe via Python-Dev wrote:
> > It appears that the requested characters are output, *followed by* the
> > number of characters output
> > (which is the value returned by sys.stdout.write) and a newline.
> > Surely this is not the intended behaviour.
>
> Of course it is. The whole point of the REPL is to evaluate an
> expression and have the result printed. (That's the P in REPL :-)
>
> `stdout.write(...)` is an expression that returns a value, so the REPL
> prints it.
>

The expected behavior, at least for me until I read this thread, was that
the REPL would print the result of a *bare* expression, meaning when the
complete statement entered is an expression when taken as a whole.

In other words, I would expect the following input and output in Python 3:

>>> sys.stdout.write('\r1')
12
>>> for i in range(1, 11):
...    sys.stdout.write('\r%d' % i)
...    time.sleep(1)
10>>>

because the first statement is, as a whole, a single expression and thus
should print its result, but a for statement and block is not a single
expression taken as a whole and therefore should not print intermediate (or
final) results.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/YMVL7RMQTYA7JIGTUQI6ZNS3MAHZRVK6/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to