python--debug神器pysnooper
发布时间:2020-12-20 09:51:28 所属栏目:Python 来源:网络整理
导读:使用它你可以获得什么优势: (1)无需用print就可以获得变量的值; (2)以日志地形式进行保存,方便随时查看; (3)可以根据需要,设置调用函数的深度; (4)多个函数的日志,可以设置前缀进行标识; 1.安装 pip install pysnooper 2.官方代码 import py
使用它你可以获得什么优势: (1)无需用print就可以获得变量的值; (2)以日志地形式进行保存,方便随时查看; (3)可以根据需要,设置调用函数的深度; (4)多个函数的日志,可以设置前缀进行标识; 1.安装 pip install pysnooper 2.官方代码 import pysnooper @pysnooper.snoop() def number_to_bits(number): if number: bits = [] while number: number,remainder = divmod(number,2) bits.insert(0,remainder) return bits else: [0] number_to_bits(6) 我们可以看到程序运行到哪一步, 以及到那一步时相关变量的值。 若果你不想追踪整个函数,你可以像这样使用: foo(): lst = [] for i in range(10): lst.append(random.randrange(1,1000)) with pysnooper.snoop(): lower = min(lst) upper = max(lst) mid = (lower + upper) / 2 print(lower,mid,upper) foo() 查看一下其源代码,发现其具有以下参数:
例子1:
@pysnooper.snoop() test(n): if n==1return 1 if n==2return 2 return test(n-1)+test(n-2) test(4) 例子2: @pysnooper.snoop("quick_sort.txt") quick_sort(a): if len(a)<=1 a tmp=a[0] left = [i in a[1:] if i<=tmp] right = [i if i > tmp] return quick_sort(left)+[tmp]+quick_sort(right) quick_sort([3,5,9,4,7,2,8]) 输出比较长,就不显示全部的结果了。? 例子3: class Foo(object): def __init__(self): self.num1 = 0 self.num2 = 0 self.sum_value = 0 add(self,num1,num2): return num1 + num2 @pysnooper.snoop(output="debug.log",watch=(self.num1self.num2self.sum_value"),prefix="--foo--") multiplication(self,num2): self.num1 = num1 self.num2 = num2 sum_value = 0 in range(0,num1): sum_value = self.add(sum_value,num2) self.sum_value = sum_value sum_value foo = Foo() foo.multiplication(3,4) ?注意前缀名字变了,以及全局变量的值。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |