Think Python—调试 11

2019-02-02  本文已影响0人  JeetChan

以下摘录自《Think Python》第十一章:字典中的调试一节。详见:http://www.codingpy.com/books/thinkpython2/11-dictionaries.html#id9

当你操作较大的数据集时,通过打印并手工检查数据来调试很不方便。 下面是针对调试大数据集的一些建议:

缩小输入:

如果可能,减小数据集合的大小。 例如,如果程序读入一个文本文件,从前10行开始分析,或是找到更小的样例。 你可以选择编辑读入的文件,或是(最好)修改程序使它只读入前 n 行。

如果出错了,你可以将 n 缩小为会导致该错误的最小值,然后在查找和解决错误的同时,逐步增加 n 的值。

检查摘要和类型:

考虑打印数据的摘要,而不是打印并检查全部数据集合: 例如,字典中项的数目或者数字列表的总和。

运行时错误的一个常见原因,是值的类型不正确。 为了调试此类错误,打印值的类型通常就足够了。

编写自检代码:

有时你可以写代码来自动检查错误。 例如,如果你正在计算数字列表的平均数,你可以检查其结果是不是大于列表中最大的元素,或者小于最小的元素。 这被称 作“合理性检查”,因为它能检测出“不合理的”结果。

另一类检查是比较两个不同计算的结果,来看一下它们是否一致。这被称作“一致性检查”。

格式化输出:

格式化调试输出能够更容易定位一个错误。 我们在调试一节中看过一个示例。pprint 模块提供了一个 pprint 函数,它可以更可读的格式显示内建类型( pprint 代表 “pretty print”)。

重申一次,你花在搭建脚手架上的时间能减少你花在调试上的时间。

上一篇下一篇

猜你喜欢

热点阅读