import code code.InteractiveConsole(locals=None, filename="<console>")
locals=None
- словарь, представляющий локальную область видимости, в котором выполнять код (дополнительно смотрите функции locals()
и globals()
.),filename="<console>"
- откуда читать команды.InteractiveConsole
.Класс InteractiveConsole()
модуля code
точно имитирует поведение интерактивного интерпретатора Python.
Этот класс основан на code.InteractiveInterpreter()
и добавляет подсказки с использованием знакомых sys.ps1
и sys.ps2
(первичное и вторичное приглашение интерпретатора), а также буферизацию ввода.
InteractiveConsole
.Класс code.InteractiveConsole
является подклассом code.InteractiveInterpreter()
и поэтому предлагает все его методы, а также следующие дополнения.
InteractiveConsole.interact()
- имитирует интерактивную консоль Python,InteractiveConsole.push()
- добавляет строку исходного кода,InteractiveConsole.resetbuffer()
- удаляет весь необработанный исходный код,InteractiveConsole.raw_input()
- читает вводимую строку.InteractiveConsole.interact(banner=None, exitmsg=None)
:Метод InteractiveConsole.interact()
точно имитирует интерактивную консоль Python.
Необязательный аргумент banner
указывает баннер для вывода перед первым взаимодействием. По умолчанию он выводит баннер, аналогичный тому, который печатается стандартным интерпретатором Python (типа Python 3.8.4 ... GCC 8.4.0 и т. п.), за которым следует имя класса (InteractiveConsole) в скобках, чтобы не путать его с реальным интерпретатором - так как он очень похож!
Необязательный аргумент exitmsg
указывает сообщение о выходе, которое печатается при выходе. чтобы подавить сообщение о выходе, передайте пустую строку этому аргументу exitmsg=''
. Если exitmsg
не указан или None
, то печатается сообщение по умолчанию.
Новое в Python 3.6: Добавлен аргумент exitmsg
.
InteractiveConsole.push(line)
:Метод InteractiveConsole.push()
передает интерпретатору строку исходного кода line
.
Строка line
не должна заканчиваться символом новой строки '\n'
, но она может иметь символы новой строки внутри исходного кода. Строка добавляется к буферу и вызывается метод InteractiveInterpreter.runource()
интерпретатора с объединенным содержимым буфера в качестве источника.
Если команда была выполнена или недействительна, то буфер сбрасывается. В противном случае команда является неполной и буфер остается таким, каким он был после добавления строки.
Метод InteractiveConsole.push()
возвращает True
, если требуется дополнительный ввод и False
, если строка каким-либо образом была обработана. Другими словами возвращаемое значение передается от метода InteractiveInterpreter.runource()
.
InteractiveConsole.resetbuffer()
:Метод InteractiveConsole.resetbuffer()
удаляет весь необработанный исходный код из входного буфера.
InteractiveConsole.raw_input(prompt="")
:Метод InteractiveConsole.raw_input()
печатает подсказку prompt
и читает вводимую строку. Возвращаемая методом строка не включает завершающий символ новой строки '\n'
.
Когда пользователь вводит последовательность клавиш EOF, возникает ошибка EOFError
. Базовая реализация читает строку из sys.stdin
.
Пользовательский подкласс может заменить это поведение другой реализацией.