程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。
第一种方法简单直接粗暴有效,就是用print
把可能有问题的变量打印出来看看:
# err.py def foo(s): n = int(s) print '>>> n = %d' %n return 10 / n def main(): foo('0') main()
执行后在输出中查找打印的变量值:
$ python err.py >>> n = 0 Traceback (most recent call last): ... ZeroDivisionError: integer division or modulo by zero
用print
最大的坏处是将来还得删掉它,想想程序里到处都是print
,运行结果也会包含很多垃圾信息。所以,我们又有第二种方法。
断言
凡是用print
来辅助查看的地方,都可以用断言(assert)来替代: