Python速成笔记——进阶(IDLE调试)

编码占了编程工作的90%,调试占了剩余工作量的90%。


目录

1 异常处理

2 取得回溯字符串

3 断言

4 日志

4.1 logging模块

​编辑

4.2 日志级别

4.3 禁用日志

4.4 将日志记录到文件


1 异常处理

当Python执行无效代码时,就会抛出异常,抛出异常相当于对程序说:停止运行这个函数中的代码,将程序转到except语句。”

错误可以由try和except语句进行处理,将可能出错的语句放置在try子句中,如果发生错误,程序执行就会转到接下来的except子句。

try语句有两种应用形式,一种是try...except,一种是try...except...finally。

一个try语句可以对应多个except语句,但至多只能有一个finally语句。finally子句必定执行。

抛出异常使用raise语句,raise由以下部分组成:

  • raise 关键字
  • 调用Exception()函数
  • 传递给Exception()函数的字符串包含异常信息
  • raise Exception(<异常信息>)

2 取得回溯字符串

如果Python语句遇到错误就会产生相应的错误信息,称为回溯。回溯包含了错误信息、导致错误的代码行号,以及导致该错误的函数调用的序列。这个序列被称之为调用栈,根据回溯信息,可以快速找到错误行。

只要抛出的异常未被处理,Python就会就会显示回溯信息。

如果既要处理异常,又要得到回溯信息,可以导入traceback模块,调用write(traceback.format_exc())将回溯信息存储到一个txt文本中以供查看。

3 断言

断言是健全性检查,如果检查失败,程序立即终止。

健全性检查有assert语句执行,assert语句包含如下部分:

  • assert关键字
  • 条件
  • 逗号
  • 当条件为Fa时执行的字符串
  • assert <条件>, <False返回信息>

4 日志

python中的logging模块便于创建自定义的消息记录,这些日志消息将描述程序何时调用日志函数,并列出你指定的任何变量当时的值。

4.1 logging模块

启用logging模块在程序运行时将日志消息显示在屏幕上,需要在程序顶部写入以下代码:

import logging

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s' )

Python记录一个事件的日志时,会创建一个LogRecord对象用于保存关于该事件的信息,使用logging.debug()函数输出日志消息,消息的格式是我们在basicConfig()函数中进行定义的。

import logging

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s' )

logging.debug('Start of program')

def factorial(n): #阶乘函数
    logging.debug('Start of factorial(%s)' % (n))
    total = 1
    for i in range(n+1):
        total *= i
        logging.debug('i is ' + str(i) + ', total is ' + str(total))
    logging.debug('End of factorial(%s)' % (n))
    return(total)

print(factorial(5))
logging.debug('Start of program')

4.2 日志级别

利用不同的日志函数,消息可以照不同的级别记录日志,级别由低到高排列为:

  • logging.debug() 用于小细节,记录变量数据,诊断问题
  • logging.info() 用于记录程序中的一般事件信息,或确认工作正常
  • logging.warning() 用于记录程序可能暂时不影响执行的错误
  • logging.error() 用于记录可能导致部分事件不能执行的错误
  • logging.critical() 用于记录可能导致程序完全停止的致命错误

4.3 禁用日志

调用logging.disable()函数可以禁用它之后的日志消息。

向logging.disable()函数传入一个日志级别,它就会禁用该级别和更低级别的所有日志消息,如logging.disable(logging.CRITICAL)。

logging.disable()函数一般放在import logging后,可以根据需要选择注释或取消注释,启用或禁用日志消息。

4.4 将日志记录到文件

logging.basicConfig()函数接收filename关键字参数。

logging.basicConfig(filename=‘<文件路径>’, level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s' )

可将日志写入文本文件,在程序执行后查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想家LEI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值