import code code.InteractiveInterpreter(locals=None)
locals=None
- словарь, представляющий переменные локальной области видимости.Для передачи нужных параметров смотрите функции locals()
и globals()
.
InteractiveInterpreter
.Класс InteractiveInterpreter()
модуля code
занимается синтаксическим анализом и состоянием интерпретатора (пространство имен пользователя). Он не занимается буферизацией ввода, подсказками или именами входных файлов (имя файла всегда передается явно).
Необязательный аргумент locals
указывает словарь , в котором будет выполняться код. По умолчанию используется только что созданный словарь с ключом '__name__'
, установленным на '__console__'
и ключом '__doc__'
, установленным на None
.
InteractiveInterpreter
:InteractiveInterpreter.runsource()
- компилирует и запускает исходник,InteractiveInterpreter.runcode()
- выполняет объект кода,InteractiveInterpreter.showsyntaxerror()
- отображает возникшую синтаксическую ошибку,InteractiveInterpreter.showtraceback()
- отображает возникшее исключение,InteractiveInterpreter.write()
- записывает данные в стандартный поток ошибок.InteractiveInterpreter.runsource(source, filename="<input>", symbol="single")
:Метод InteractiveInterpreter.runsource()
компилирует и запускает какой-нибудь исходник source
в интерпретаторе. Аргументы такие же, как для функции модуля code.compile_command()
.
По умолчанию для имени файла filename
используется значение '<input>'
, а для символа symbol
- 'single'
. Может произойти одно из нескольких событий:
code.compile_command()
вызвала исключение SyntaxError
или OverflowError
. Отладочная информация будет напечатана путем вызова метода InteractiveInterpreter.showsyntaxerror()
. Сам метод InteractiveInterpreter.runsource()
возвращает False
.code.compile_command()
возвратила None
. Сам метод InteractiveInterpreter.runsource()
возвращает True
.code.compile_command()
возвращает объект кода. Код выполняется путем вызова функции InteractiveInterpreter.runcode()
, которая также обрабатывает исключения времени выполнения, за исключением SystemExit
. Сам метод InteractiveInterpreter.runsource()
возвращает False
.Возвращаемое значение можно использовать для решения вопроса о том, следует ли использовать sys.ps1
или sys.ps2
(первичное и вторичное приглашение интерпретатора) для запроса следующей строки.
InteractiveInterpreter.runcode(code)
:Метод InteractiveInterpreter.runcode()
выполняет объект кода code
. При возникновении исключения, для отображения отладочной информации вызывается метод InteractiveInterpreter.showtraceback()
. Все исключения перехватываются, кроме SystemExit
, которому разрешено подниматься.
Примечание: исключение KeyboardInterrupt
может возникнуть в любом месте исполняемого кода и не всегда может быть перехвачено.
InteractiveInterpreter.showsyntaxerror(filename=None)
:Метод InteractiveInterpreter.showsyntaxerror()
отображает только что возникшую синтаксическую ошибку, при этом трассировка стека не отображается (для синтаксических ошибок нет такой трассировки).
Если указано имя файла filename
, то оно вставляется в исключение вместо имени файла по умолчанию, которое предоставляется синтаксическим анализатором Python, поскольку он всегда использует '<string>'
при чтении из строки.
Вывод записывается методом InteractiveInterpreter.write()
.
InteractiveInterpreter.showtraceback()
:Метод InteractiveInterpreter.showtraceback()
отображает только что возникшее исключение. Отображается полная обратная трассировка с цепочкой, а не только первичная трассировка.
Вывод записывается методом InteractiveInterpreter.write()
.
InteractiveInterpreter.write(data)
:Метод InteractiveInterpreter.write()
записывает data
в стандартный поток ошибок sys.stderr
.
Производные классы должны переопределить этот метод, чтобы обеспечить соответствующую обработку выходных данных по мере необходимости.