Переходить в интерпретатор python при выполнении функции

У меня есть модуль python с функцией:

def do_stuff(param1 = 'a'):
    if type(param1) == int:
        # enter python interpreter here
        do_something()
    else:
        do_something_else()

Есть ли способ заглянуть в интерпретатор командной строки, где у меня есть комментарий? так что если я запустил следующее в python:

>>> import my_module
>>> do_stuff(1)

Я получаю следующее приглашение в области и контексте, где у меня есть комментарий в do_stuff()?

Ответ 2

Если вы хотите стандартное интерактивное приглашение (вместо отладчика, как показано в предварительном порядке), вы можете сделать это:

import code
code.interact(local=locals())

Смотрите: код модуля.

Если у вас установлен IPython и вместо него требуется оболочка IPython, вы можете сделать это для IPython >= 0.11:

import IPython; IPython.embed()

или для более старых версий:

from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed()
ipshell(local_ns=locals())

Ответ 3

Если вы хотите использовать интерпретатор Python по умолчанию, вы можете сделать

import code
code.interact(local=dict(globals(), **locals()))

Это позволит получить доступ как к локальным, так и глобальным.

Если вы хотите перейти к интерпретатору IPython, решение IPShellEmbed устарело. В настоящее время работает:

from IPython import embed
embed()