Dlaczego instrukcje drukowania Pythona zawierające argumenty 'end =' zachowują się inaczej w pętlach while?

Używam Pythona w wersji 2.7.3 na MacOSX.

Rozważmy ten blok kodu:

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

Jeśli uruchomię ten skrypt, obserwuję dane wyjściowe, których oczekuję: Liczby0 przez4 z\n znak dołączany do każdego numeru. Ponadto każdy numer jest wyświetlany po jednej sekundzie przerwy.

0
1
2
3
4

Rozważ teraz ten blok kodu:

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

Wynik jest taki, jakiego oczekuję,01234 bez\n, alewyczucie czasu jest nieoczekiwany. Zamiast wyświetlać każdą cyfrę po jednosekundowej przerwie, proces czeka cztery sekundy, a następnie wyświetla wszystkie pięć liczb.

Dlaczegoprint('string') zachowywać się inaczej niżprint('string', end='') w pętlach? Czy jest jakiś sposób na wyświetlanie znaków bez znaków nowej linii, po jednej sekundzie? próbowałemsys.stdout.write(str(x)), ale zachowuje się tak samo jakprint(end='').

questionAnswers(2)

yourAnswerToTheQuestion