Warum verhalten sich Python-Druckanweisungen, die 'end =' - Argumente enthalten, in while-Schleifen anders?

Ich verwende Python Version 2.7.3 unter MacOSX.

Betrachten Sie diesen Codeblock:

from __future__ import print_function
import time
x = 0
while x < 5:
    print(x)
    x += 1
    time.sleep(1)

Wenn ich dieses Skript ausführe, beobachte ich die erwartete Ausgabe: Die Zahlen0 durch4 mit einer\n Zeichen, das an jede Zahl angehängt wird. Außerdem wird jede Nummer nach einer Pause von einer Sekunde angezeigt.

0
1
2
3
4

Betrachten Sie nun diesen Codeblock:

from __future__ import print_function
import time
x = 0
while x < 5:
    print(x, end='')
    x += 1
    time.sleep(1)

Die Ausgabe ist das, was ich erwarte,01234 ohne das\n's, aber daszeitliche Koordinierung ist unerwartet. Anstatt jede Ziffer nach einer Pause von einer Sekunde anzuzeigen, wartet der Vorgang vier Sekunden und zeigt dann alle fünf Zahlen an.

Warum tutprint('string') anders verhalten alsprint('string', end='') in while-Schleifen? Gibt es eine Möglichkeit, die Zeichen sekundenweise ohne Zeilenumbruch anzuzeigen? Ich habe es versuchtsys.stdout.write(str(x)), aber es verhält sich genauso wieprint(end='').

Antworten auf die Frage(2)

Ihre Antwort auf die Frage