说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的内置函数 breakpoint() 将会在调用时将你进入调试器中。 breakpoint() 可以让代码便捷地进入 pdb 交互式源代码调试器。
以下我们写了一段代码:
def fun():
foo = {}
lst = ['a', 'b', 'c']
for i, v in enumerate(lst):
foo[i] = v
if v == 'b':
breakpoint()
fun()
在迭代执行到 b 的时候进入交互式调试界面:
(Pdb) i
1
(Pdb) v
'b'
(Pdb) foo
{0: 'a', 1: 'b'}
(Pdb) r
--Return--
> /Users/test2.py(4)fun()->None
-> for i, v in enumerate(lst):
(Pdb) foo
{0: 'a', 1: 'b', 2: 'c'}
(Pdb) r
--Return--
> /Users/test2.py(9)<module>()->None
-> fun()
(Pdb) r
(py310) hui@Huis-MBP 2022 % ...
语法如下:
breakpoint(*args, **kws)
具体来说,它将调用 sys.breakpointhook(*args, **kws)
,sys.breakpointhook()
必须接受传递的任何参数,直接传递 args 和 kws。
默认情况下,这会将您进入 pdb 调试器。
默认情况下, sys.breakpointhook()
调用 pdb.set_trace()
且没有参数。在这种情况下,它纯粹是一个便利函数,因此您不必显式导入 pdb 且键入尽可能少的代码即可进入调试器。
但是, sys.breakpointhook()
可以设置为其他一些函数并被 breakpoint() 自动调用,以允许进入你想用的调试器。
引发一个 审计事件 builtins.breakpoint
并附带参数 breakpointhook。
这是 3.7 新版的功能。
在使用 Python 3.7 之前,开发者为调试程序不得不首先引入pdb包,然后调用pdb.set_trace()函数来跟踪调试程序。但如果你准备使用其它调试器,如web-pdb,你就不得不把与PDB模块有关的代码移除掉,然后添加web_pdb.set_trace()方法。这使得为调试 Python程序,不得不花费更大的精力和开销,使得Python程序难以维护和调试。
Python3.7引入的breakpoint()方法可以使我们编写松耦合调试代码。该函数自动调用sys.breakpointhook()函数,直接传递相关参数。默认情况下,sys.breakpointhook()函数内部调用pdb.set_trace()方法而不需要参数。这种情况下下,该函数自动引入pdb包,而无需用户显示的引入pdb包。但用户可以将sys.breakpointhook()设置为其它函数,breakpoint()函数将自动调用用户设置的函数,而进入用户所选择的调试器。
关于 pbd 的命令和用法可以浏览关于 pdb 内置库的教程。
更新时间:2022-05-23 18:45:27 标签:python 测试 断点