Текст объясняет метод для достижения многострочного ввода в цикле чтения-вычисления-вывода (REPL) Python. Стандартный ввод можно получить с помощью `open(0)`, что позволяет использовать многострочный ввод с помощью Ctrl+D (Unix) или Ctrl+Z (Windows) для EOF. Первоначальное использование `open(0).read()` успешно захватывает многострочный ввод как строку. Однако последующие попытки чтения из стандартного ввода таким образом приводят к `OSError`. Эта ошибка возникает из-за того, что Python закрывает дескриптор файла после первой операции чтения. Решение заключается в аргументе `closefd=False` в функции `open()`. Установив `closefd=False`, дескриптор файла остается открытым после чтения. Это позволяет повторно считывать многострочный ввод из стандартного ввода в среде REPL. Последовательные вызовы `open(0, closefd=False).read()` работают без проблем. Эта техника позволяет продолжать многострочный ввод в сеансе REPL. Основным преимуществом является облегчение интерактивного тестирования кода с многострочными данными.
mathspp.com
Rodrigo Girão Serrão: TIL #139 – Multiline input in the REPL
