- 项目开发过程中很难一次完全运行,总是会有各种各样的bug,修复这些bug需要各种调试手段。
调试技巧一: printf()函数。将可能出现问题的信息打印出来,简单粗暴,使用时需要大致知道问题出现在什么地方。例如:
def division(x, y):
print('**********', y)# ********** 0
return x / y
print(division(2, 0))
print()函数的不便之处就是用完之后要将其删除,不然控制台输出各种不必要的信息。
调试技巧二:断言assert。凡是可以用print()函数的都可以使用断言,不同之处是触发断言后会抛出一个AssertionError的错误。;例如:
def division(x, y):
assert y != 0, 'y is zero'
return x / y
print(division(2, 0)) #AssertionError: y is zero
断言在启动Python解释器时可以用-O参数来关闭assert:例如:python3 -o ****.py
断言的不便之处和print一样使用后也是要删除,不然会造成一些的不必要的代码
调试技巧三:logging()函数。和assert比,logging不会抛出错误,而且可以输出到文件。
import logging
logging.basicConfig(level = logging.INFO)#添加配置
def division(x, y):
logging.info('********** y = ', y)
return x / y
print(division(2, 0))
和print断言相比logging的好处,它允许你指定记录信息的级别,有debug,info,warning,error等几个级别,当配置信息指定level=INFO时,logging.debug就不起作用了。同样指定level=WARNING后,debug和info就不起作用了。这样就可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。
调试技巧四:Python的调试器pdb。让程序以单步方式运行,可以随时查看运行状态。
import pdb
def division(x, y):
pdb.set_trace() # 运行到这里会自动暂停
return x / y
print(division(2, 0))
pdb可以通过pdb.set_trace()来设置程序停留的地方,然后可以逐步调试代码:
-> import sys
(Pdb) c #继续下一步
/Users/apple/PycharmProjects/Project1/Test/SecondBook.py(317)division()
-> return x / y
(Pdb) p y #p 变量名查看变量
0
(Pdb) p x
2
(Pdb) q #q退出调试
好了到这大家就可以选用适合的方法进行调试了,如果大家有更好的方法欢迎一起讨论。
持续更新~🙈
网友评论