Странная работа print() с параметром end

from time import sleep

print('2 + ', end='')
sleep(1)
print('2 = ', end='')
sleep(1)
print('4')

Почему при вручную заданном значении end печать будет производиться лишь при достижении 7 строки, но если оставить его стандартным или вписать end='\n', то все будет работать так, как задумывалось?


Ответы (1 шт):

Автор решения: Pavel Durmanov

Как сказал @andreymal, вывод буферизуется по строкам, можно либо добавлять flush=True в print, либо установить переменную окружения export PYTHONUNBUFFERED=1 чтобы достичь того же эффекта но глобально.

Также можно запускать так: PYTHONUNBUFFERED=1 python main.py

→ Ссылка