五味子

小舟从此逝,江海寄余生

0%

python—-调试

学习自《python编程快速上手——让繁琐的工作自动化》

基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import traceback

# 异常

# 抛出异常
raise Exception(error message)

# 处理异常
try:
pass
except:
pass

# 取得反向追踪字符串, 可以将其写入errorInfo文件中
traceback.format_exc()

# 断言
# statement是一个表达式
# string为表达式为False时应返回的字符串
assert statement, string

# 日志
# logging.basicConfig()的level属性显示你想查看的日志级别
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('End of program')

# 停用某级别及其更低级别日志
logging.disabled(level)

# 将日志写入文本文件,加入filename参数即可
logging.basicConfig(filename = filename, level = level, format = format)

说明及注意

assert和try-except区别及适用

assert是给程序员看的,遇到异常程序会崩溃,并给出崩溃的原因,以便快速找出错误

try-except是给用户看的,妥当处理用户的错误,让程序不崩溃

禁用断言

运行python时传入-O选项

不要使用print()调试

print()需要删除或注释,易不小心多删或少删

而日志可以加入一次logging.disabled(logging.CRITICAL)禁用日志即可

日志级别

级别 日志函数 描述
DEBUG logging.debug() 最低级别,用于小细节。通常只有在诊断问题时,你才会关心这些消息
INFO logging.info() 用于记录程序中一般事件的信息,或确认一切工作正常
WARNING logging.warning() 用于表示可能的问题,他不会阻止程序的工作,但将来可能会
ERROR logging.error() 用于记录错误,它导致程序做某事失败
CRITICAL logging.critical() 最高级别。用于表示致命的错误,它导致或将要导致程序完全停止工作