Почему операторы печати 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='')
.