在执行函数时进入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()
函数的上下文中得到下一个提示符吗?
4 个回答
69
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
)。
如果你安装了其他调试器(比如ipdb
、pdbpp
等等),那么调用breakpoint()
时就会进入这些调试器。
想了解更多信息,可以查看这些文档:https://docs.python.org/3/library/pdb.html