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/