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='')
.