print大法固然好,但是在print大法不work的时候还有其他更炫酷的方法。那就是在代码里内置assert。在代码中内置assert语句可以减少你的debug范围。另一种方法就是在debug时使用pysnooper这个包。pysnooper的好谁用谁知道。
assert
## assert的异常参数,其实就是在断言表达式后添加字符串信息,
用来解释断言并更好的知道是哪里出了问题。格式如下:
assert expression [, arguments]
assert 表达式 [, 参数]
lists = ['a','b','c']
assert lists[0] == 'a', '列表的第一个元素不为"a"'
assert len(lists) >=5, '列表元素个数小于5'
返回的结果如下。如果不满足表达式,则会raise后面的arguments信息。
pysnooper
python还有一种debug方法就是使用pysnooper这个包。这个包已经封装地很好了。
引自机器之心
一般情况下,想要知道哪一行代码在运行、哪一行不运行、本地变量的值是多少时,大部分人会使用 print 函数,在关键部分打印某个或某组变量的值、形状、类型等信息。
而 PySnooper 让你能快速地获得这些信息,且相比之下它不需要细致地写 print 函数,只需要向感兴趣的函数增加一个装饰器就行了。我们会得到该函数的详细 log,包含哪行代码能运行、什么时候运行以及本地变量变化的确切时间。
import pysnooper
@pysnooper.snoop()
def multiple(num):
count = 1
for i in range(1,num+1):
count *= i
return count
multiple(5)
你只需要在函数的前面写上@pysnooper.snoop()
就行了,然后它就会打印出函数运行过程中的所有信息,就是这么简单粗暴。
以下是输出结果: