这篇文章主要介绍了调试
Python
程序代码的几种方法总结
,
文中代码基于
Python2.x
版
本
,
需要的朋友可以参考下
程序能一次写完并正常运行的概率很小,基本不超过
1%
。总会有各种各样的
bug
需要
修正。有的
bug
很简单,看看错误信息就知道,有的
bug
很复杂,我们需要知道出错时,哪
些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复
bug
。
第一种方法简单直接粗暴有效,就是用
把可能有问题的变量打印出来看看:
# 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
用
最大的坏处是将来还得删掉它,想想程序里到处都是
,运行结果也会包含
很多垃圾信息。所以,我们又有第二种方法。
断言
凡是用
来辅助查看的地方,都可以用断言
(assert)
来替代:
# err.py
def foo(s):
n = int(s)
assert n != 0, 'n is zero!'
return 10 / n
def main():
foo('0')
assert
的意思是,表达式
n != 0
应该是
True
,否则,后面的代码就会出错。
如果断言失败,
assert
语句本身就会抛出
AssertionError
:
$ python err.py
Traceback (most recent call last):
...
AssertionError: n is zero!
程序中如果到处充斥着
assert
,和
相比也好不到哪去。不过,启动
Python
解释器
时可以用
-O
参数来关闭
assert
:
$ python -O err.py
Traceback (most recent call last):