python学习笔记(十八) --调试(print、assert、logging、pdb)

一:print

代码运行出错,我们可以使用print输出语句来查看变量的值,从而找到问题点,但这种方式比较麻烦,我们或许需要在多个地方加上print语句才能准确的找出问题所在。并且当我们改正错误以后还需要将print删除,否则影响代码的美观。

二:assert 断言

凡是调试时用到print的地方我们都可以换成 assert

如下

def foo(s):
    n = int(s)
    assert n != 0, 'n is zero!' #如果n不等于0会抛出异常,并显示逗号后面的字符串
    return 10 / n

if __name__ == '__main__':
	foo('0')
C:\Users\Administrator\Desktop>python err.py
Traceback (most recent call last):
  File "err.py", line 7, in <module>
    foo('0')
  File "err.py", line 3, in foo
    assert n != 0, 'n is zero!'
AssertionError: n is zero!

我们可以看出,使用断言的地方,如果 assert 后面的结果为flase,则会抛出一个AssertionError异常。

当我们将bug改掉以后,可以使用 python -O 来执行脚本,从而屏蔽掉assert。

注意 是大写的 字母 O

C:\Users\Administrator\Desktop>python -O err.py
Traceback (most recent call last):
  File "err.py", line 7, in <module>
    foo('0')
  File "err.py", line 4, in foo
    return 10 / n
ZeroDivisionError: division by zero

三:logging

和assert相比,logging不会抛出异常,且可以输出到文件

日志分为如下几个等级

日志等级(level) 描述
DEBUG 最详细的日志信息,典型应用场景是 问题诊断
INFO 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR 由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL 当发生严重错误,导致应用程序不能继续运行时记录的信息

日志可使用的函数 

函数 说明
logging.debug(msg, *args, **kwargs) 创建一条严重级别为DEBUG的日志记录
logging.info(msg, *args, **kwargs) 创建一条严重级别为INFO的日志记录
logging.warning(msg, *args, **kwargs) 创建一条严重级别为WARNING的日志记录
logging.error(msg, *args, **kwargs) 创建一条严重级别为ERROR的日志记录
logging.critical(msg, *args, **kwargs) 创建一条严重级别为CRITICAL的日志记录
logging.log(level, *args, **kwargs) 创建一条严重级别为level的日志记录
logging.basic
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值