Почему операторы печати python, содержащие аргументы end =, ведут себя по-разному в циклах while?

Я использую Python версии 2.7.3 на MacOSX.

Рассмотрим этот блок кода:

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

Если я запускаю этот скрипт, я наблюдаю результат, который я ожидаю: числа0 через4 с\n символ добавляется к каждому номеру. Кроме того, каждое число отображается после одной секунды паузы.

0
1
2
3
4

Теперь рассмотрим этот блок кода:

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

Выход - то, что я ожидаю,01234 без\nх, носинхронизация неожиданно Вместо отображения каждой цифры после односекундной паузы процесс ждет четыре секунды, а затем отображает все пять чисел.

Почемуprint('string') вести себя иначе, чемprint('string', end='') в то время как петли? Есть ли способ отображать символы без перевода строки, одну секунду за раз? Я пыталсяsys.stdout.write(str(x)), но ведет себя так же, какprint(end='').

Ответы на вопрос(2)

Ваш ответ на вопрос