在执行函数时进入Python解释器

101 投票
4 回答
35371 浏览
提问于 2025-04-15 18:36

我有一个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()函数的上下文中得到下一个提示符吗?

4 个回答

69

插入

import pdb; pdb.set_trace()

会让你在那个地方进入Python调试器

可以查看这里: http://docs.python.org/library/pdb.html

159

如果你想要一个标准的交互式提示符(而不是像prestomation那样的调试器),你可以这样做:

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

可以查看:code模块

如果你安装了IPython,并且想要一个IPython的命令行,可以这样做,适用于IPython版本大于等于0.11:

import IPython; IPython.embed()

或者对于旧版本:

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

2023年的更新:从py3.7开始,breakpoint()这个功能被加入了,它会让你进入调试器(默认是pdb)。

如果你安装了其他调试器(比如ipdbpdbpp等等),那么调用breakpoint()时就会进入这些调试器。

想了解更多信息,可以查看这些文档:https://docs.python.org/3/library/pdb.html

撰写回答