Почему input() читает символы, введенные во время time.sleep() в терминальной программе?Python

Программы на Python
Anonymous
Почему input() читает символы, введенные во время time.sleep() в терминальной программе?

Сообщение Anonymous »

Вопрос:

Я пишу простую программу на основе терминала на Python и заметил неожиданное поведение при объединении time.sleep() и input().
Вот минимальный пример:

Код: Выделить всё

import time

print("Starting")
time.sleep(3)
input()
Если я ввожу символы, пока программа находится в вызове time.sleep(3), эти символы немедленно считываются функцией input() после завершения сна. Я ожидал, что метод input() будет принимать вводимые данные только после его вызова.
Почему это происходит? Обрабатывается ли ввод Python или он буферизуется терминалом или операционной системой? Каков правильный способ предотвратить использование ранее введенных данных функцией input() в программах на основе терминала?
Мне особенно интересно понять основную причину такого поведения, а не просто обходной путь.

Подробнее здесь: https://stackoverflow.com/questions/798 ... al-program

Вернуться в «Python»