美文网首页
Python调试

Python调试

作者: 酒深巷子Ya | 来源:发表于2018-06-04 09:27 被阅读55次
    • 项目开发过程中很难一次完全运行,总是会有各种各样的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退出调试

    好了到这大家就可以选用适合的方法进行调试了,如果大家有更好的方法欢迎一起讨论。
    持续更新~🙈

    相关文章

      网友评论

          本文标题:Python调试

          本文链接:https://www.haomeiwen.com/subject/tsifsftx.html