Класс, производный от code. Не содержит дополнительных переменных экземпляра.

Класс, производный от Lib/code.py. Не содержит дополнительных переменных экземпляра.


Класс, производный от code. Не содержит дополнительных переменных экземпляра.

class code.InteractiveInterpreter(locals=None)

Класс, производный от '__name__'. Не '__console__' содержит '__doc__' дополнительных None переменных экземпляра.

class code.InteractiveConsole(locals=None, filename='<console>')

Полностью имитирует поведение интерактивного интерпретатора Python. Этот класс основан на InteractiveInterpreter и добавляет подсказки с использованием знакомых sys.ps1 и sys.ps2, а также буферизацию ввода.

code.interact(banner=None, readfunc=None, local=None, exitmsg=None)

Удобная функция для запуска цикла чтения-оценки-печати. При этом создается новый экземпляр InteractiveConsole и устанавливается параметр readfunc, который будет использоваться в качестве метода InteractiveConsole.raw_input(), если он предусмотрен. Если указано значение local, оно передается в конструктор InteractiveConsole для использования в качестве пространства имен по умолчанию для цикла интерпретатора. Затем запускается метод экземпляра interact(), в котором в качестве баннера и сообщения о выходе передаются banner и exitmsg, если они предусмотрены. Объект console удаляется после использования.

Изменено в версии 3.6: Добавлен параметр exitmsg.

code.compile_command(source, filename='<input>', symbol='single')

Эта функция полезна для программ, которые хотят эмулировать основной цикл интерпретатора Python (он же цикл чтения-вычисления-печати). Сложность заключается в том, чтобы определить, когда пользователь ввел неполную команду, которую можно завершить, введя дополнительный текст (в отличие от полной команды или синтаксической ошибки). Эта функция почти всегда принимает то же решение, что и основной цикл реального интерпретатора.

source - строка исходного кода; filename - необязательное имя файла, из которого был прочитан исходный код, значение по умолчанию '<input>'; и symbol - необязательный начальный символ грамматики, который должен быть 'single' (по умолчанию), 'eval' или 'exec'.

Возвращает объект кода (такой же, как compile(source, filename, symbol)), если команда завершена и допустима; None, если команда не завершена; возвращает SyntaxError, если команда завершена и содержит синтаксическую ошибку, или возвращает OverflowError или ValueError, если команда содержит недопустимый литерал.

Интерактивные объекты интерпретатора

InteractiveInterpreter.runsource(source, filename='<input>', symbol='single')

Скомпилируйте и запустите некоторый исходный код в интерпретаторе. Аргументы те же, что и для compile_command(); по умолчанию для filename используется '<input>', а для symbol - 'single'. Может произойти одно из нескольких событий:

  • Введенные данные неверны; compile_command() вызвало исключение (SyntaxError или OverflowError). При вызове метода showsyntaxerror() будет выведена обратная трассировка синтаксиса. runsource() возвращает False.

  • Введенные данные неполны, и требуется ввести дополнительные данные; возвращено compile_command() None. runsource() возвращает True.

  • Ввод завершен; compile_command() возвращен объект code. Код выполняется путем вызова runcode() (который также обрабатывает исключения во время выполнения, за исключением SystemExit). runsource() возвращает False.

Возвращаемое значение можно использовать для принятия решения о том, использовать ли sys.ps1 или sys.ps2 для запроса следующей строки.

InteractiveInterpreter.runcode(code)

Выполнить объект кода. При возникновении исключения вызывается showtraceback() для отображения обратной трассировки. Перехватываются все исключения, кроме SystemExit, которому разрешено распространяться.

Примечание по поводу KeyboardInterrupt: это исключение может встречаться в другом месте этого кода и не всегда может быть перехвачено. Вызывающий объект должен быть готов к тому, что он столкнется с этим.

InteractiveInterpreter.showsyntaxerror(filename=None)

Отобразить только что возникшую синтаксическую ошибку. Трассировка стека не отображается, поскольку для синтаксических ошибок ее нет. Если указано filename, то оно помещается в исключение вместо имени файла по умолчанию, предоставляемого синтаксическим анализатором Python, поскольку он всегда использует '<string>' при чтении из строки. Выходные данные записываются методом write().

InteractiveInterpreter.showtraceback()

Отобразите только что возникшее исключение. Мы удаляем первый элемент стека, поскольку он находится в рамках реализации объекта интерпретатора. Выходные данные записываются методом write().

Изменено в версии 3.5: Отображается полная цепная обратная трассировка, а не только первичная обратная трассировка.

InteractiveInterpreter.write(data)

Запишите строку в стандартный поток ошибок (sys.stderr). Производные классы должны переопределить это, чтобы обеспечить соответствующую обработку выходных данных по мере необходимости.

Интерактивные консольные объекты

Класс InteractiveConsole является подклассом InteractiveInterpreter и поэтому предлагает все методы объектов интерпретатора, а также следующие дополнения.

InteractiveConsole.interact(banner=None, exitmsg=None)

Тщательно имитируйте интерактивную консоль Python. Необязательный аргумент banner указывает баннер для печати перед первым взаимодействием; по умолчанию он печатает баннер, аналогичный тому, который печатается стандартным интерпретатором Python, за которым следует имя класса объекта console в круглых скобках (чтобы не путать его с реальным интерпретатором - поскольку это так близко!).

Необязательный аргумент exitmsg указывает, какое сообщение о выходе будет выводиться при выходе. Передайте пустую строку, чтобы исключить сообщение о выходе. Если exitmsg не задано или None, будет выводиться сообщение по умолчанию.

Изменено в версии 3.4: Чтобы запретить печать любого баннера, введите пустую строку.

Изменено в версии 3.6: Распечатайте сообщение о выходе при выходе из системы.

InteractiveConsole.push(line)

Вставьте строку исходного текста в интерпретатор. В строке не должно быть завершающей новой строки; в ней могут быть внутренние новые строки. Строка добавляется в буфер, и вызывается метод интерпретатора runsource() с объединенным содержимым буфера в качестве источника. Если это указывает на то, что команда была выполнена или недействительна, буфер сбрасывается; в противном случае команда является неполной, и буфер остается таким, каким он был после добавления строки. Возвращаемое значение равно True, если требуется дополнительный ввод, False, если строка была каким-либо образом обработана (это то же самое, что и runsource()).

InteractiveConsole.resetbuffer()

Удалите весь необработанный исходный текст из входного буфера.

InteractiveConsole.raw_input(prompt='')

Введите запрос и прочитайте строку. Возвращаемая строка не содержит завершающей новой строки. Когда пользователь вводит последовательность клавиш EOF, выводится значение EOFError. Базовая реализация считывает данные из sys.stdin; подкласс может заменить это другой реализацией.

Вернуться на верх