打印日志 print()
print()把可能有问题的变量打印出来,简单又粗暴。
断言 assert
凡是用print()来辅助查看的地方,都可以用断言(assert)来替代。
示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 断言
def fun():
n = int(input())
# 表达式n != 0应该是True,否则,根据程序运行的逻辑,后面的代码肯定会出错
assert n != 0, "n is zero"
print ("you input is ", n)
# 运行方法
def runTest():
fun()
# 运行
runTest()
假如输入 0,会收获下面的报错
表达式n != 0应该是True,否则,根据程序运行的逻辑,后面的代码肯定会出错
D:\PythonProject>python main.py
0
Traceback (most recent call last):
File "main.py", line 16, in <module>
runTest()
File "main.py", line 13, in runTest
fun()
File "main.py", line 7, in fun
assert n != 0, "n is zero"
AssertionError: n is zero
logging
把print()替换为logging是第3种方式,和assert比,logging不会抛出错误,而且可以输出到文件.
这个方法,吊吊的,终于有点兴趣了
示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# logging
import logging
# 这里可以指定日志级别debug,info,warning,error等几个级别
logging.basicConfig(level=logging.INFO)
logging.info("Hello world")
logging.info(10 / 0)
运行结果
D:\PythonProject>python main.py
INFO:root:Hello world
Traceback (most recent call last):
File "main.py", line 9, in <module>
logging.info(10 / 0)
ZeroDivisionError: division by zero
单步运行 pdb
启动Python的调试器pdb,让程序以单步方式运行,可以随时查看运行状态。
命令
python -m pdb xxx.py
命令 n 进入下一行
最好使用IDE工具调试方便一些
IDE
如果要比较爽地设置断点、单步执行,就需要一个支持调试功能的IDE。目前比较好的Python IDE有:
Visual Studio Code:https://code.visualstudio.com/,需要安装Python插件。
PyCharm:http://www.jetbrains.com/pycharm/
另外,Eclipse加上pydev插件也可以调试Python程序。