Python调试

  • 项目开发过程中很难一次完全运行,总是会有各种各样的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 调试-常枫老师QQ:234789175程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种...
    蝴蝶兰玫瑰阅读 3,349评论 1 4
  • http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958...
    喵在野阅读 2,490评论 0 1
  • 高级语言通常都内置了一套try...except...finally...的错误处理机制,Python也不例外。 ...
    时间之友阅读 4,158评论 0 1
  • 身为一个人,能无耻到何种地步,身为一个人,能蠢到何种地步,别人一再的伤害你,你却无动于衷,心中还想着,没事,以后她...
    赵小星阅读 1,131评论 0 0
  • 本文其实是《蓝海战略》的读后感 任何商业理论尤其是战略管理,或多或少都有倒果为因的嫌疑,因为案例中的当事人很有可能...
    KoMxDESTINY阅读 8,004评论 1 6