Сообщить об ошибке.

Функция interact() модуля code в Python

Вызов консоли интерпретатора из кода Python

Синтаксис:

import code

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

Параметры:

  • banner=None - символы приглашения ввода в консоли,
  • readfunc=None - функция чтения ввода из консоли,
  • local=None - пространства имен по умолчанию для интерпретатора,
  • exitmsg=None - сообщение, которое печатается при выходе из консоли.

Возвращаемое значение:

  • нет.

Описание:

Функция interact() модуля code создана для удобного запуска цикла read-eval-print в вызываемой консоли.

Функция code.interact() создает новый экземпляр класса code.InteractiveConsole() и устанавливает readfunc для использования в качестве метода InteractiveConsole.raw_input(), если он предусмотрен.

Если указан аргумент local, то он передается конструктору InteractiveConsole для использования в качестве пространства имен по умолчанию для интерпретатора. Затем запускается метод экземпляра InteractiveConsole.interact() с параметрами banner и exitmsg, если это предусмотрено.

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

Изменено в Python 3.6: добавлен параметр exitmsg.

Примеры использования code.interact():

Функция code.interact() многим нравится и очень сильно помогает при интерактивной отладке кода.

Создайте файл interact.py с кодом, представленном ниже.

# interact.py
import code

def ff(x):
    return x - x

a = 20
b = ff(a)

try:
    c = a/b
except Exception as e:
    line = f'Ошибка: {e}. Строка №9: c = a/b'
    code.interact(banner=line, local=locals())

print('Дальнейшее выполнение программы...')

Теперь, если запустить файл из консоли, то в точке вызова этой функции откроется консоль интерпретатора Python. В открывшейся консоли, в реальном времени можно посмотреть значения переменных, присвоить им другие значения, вызвать определенные в коде функции с другими аргументами и т. д.

docs-python@IdeaCentre:~$ python3 interact.py 
Ошибка: division by zero. Строка №9: c = a/b
>>> a
20
>>> b
0
>>> ff(10)
0
>>> ff(20)
0
>>> 
now exiting InteractiveConsole...
Дальнейшее выполнение программы...

Для выхода из консоли:

  • и продолжения работы скрипта нажмите Ctrl + D,
  • и завершения работы скрипта наберите exit().