以下摘录自《Think Python》第十一章:字典中的调试一节。详见:http://www.codingpy.com/books/thinkpython2/11-dictionaries.html#id9
当你操作较大的数据集时,通过打印并手工检查数据来调试很不方便。 下面是针对调试大数据集的一些建议:
缩小输入:
如果可能,减小数据集合的大小。 例如,如果程序读入一个文本文件,从前10行开始分析,或是找到更小的样例。 你可以选择编辑读入的文件,或是(最好)修改程序使它只读入前 n 行。
如果出错了,你可以将 n 缩小为会导致该错误的最小值,然后在查找和解决错误的同时,逐步增加 n 的值。
检查摘要和类型:
考虑打印数据的摘要,而不是打印并检查全部数据集合: 例如,字典中项的数目或者数字列表的总和。
运行时错误的一个常见原因,是值的类型不正确。 为了调试此类错误,打印值的类型通常就足够了。
编写自检代码:
有时你可以写代码来自动检查错误。 例如,如果你正在计算数字列表的平均数,你可以检查其结果是不是大于列表中最大的元素,或者小于最小的元素。 这被称 作“合理性检查”,因为它能检测出“不合理的”结果。
另一类检查是比较两个不同计算的结果,来看一下它们是否一致。这被称作“一致性检查”。
格式化输出:
格式化调试输出能够更容易定位一个错误。 我们在调试一节中看过一个示例。
pprint
模块提供了一个pprint
函数,它可以更可读的格式显示内建类型(pprint
代表 “pretty print”)。
重申一次,你花在搭建脚手架上的时间能减少你花在调试上的时间。
网友评论