зайти в интерпретатор Python при выполнении функции - PullRequest
83 голосов
/ 29 января 2010

У меня есть модуль 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()?

Ответы [ 3 ]

136 голосов
/ 29 января 2010

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

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())
55 голосов
/ 29 января 2010

Установка

import pdb; pdb.set_trace()

войдет в отладчик Python в этот момент

Смотрите здесь: http://docs.python.org/library/pdb.html

22 голосов
/ 06 октября 2015

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

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

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

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

from IPython import embed
embed()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...