Класс, производный от 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; подкласс может заменить это другой реализацией.