标签:通过 app 位置 mod 形式 其他 日志 全局变量 exp
使用它你可以获得什么优势:
(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: return [0] number_to_bits(6)
我们可以看到程序运行到哪一步, 以及到那一步时相关变量的值。
若果你不想追踪整个函数,你可以像这样使用:
def 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()
查看一下其源代码,发现其具有一下参数:
@pysnooper.snoop() def test(n): if n==1: return 1 if n==2: return 2 return test(n-1)+test(n-2) test(4)
例子2:
@pysnooper.snoop("quick_sort.txt") def quick_sort(a): if len(a)<=1: return a tmp=a[0] left = [i for i in a[1:] if i<=tmp] right = [i for i in a[1:] 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 def add(self, num1, num2): return num1 + num2 @pysnooper.snoop(output="debug.log", watch=("self.num1", "self.num2", "self.sum_value")) def multiplication(self, num1, num2): self.num1 = num1 self.num2 = num2 sum_value = 0 for i in range(0, num1): sum_value = self.add(sum_value, num2) self.sum_value = sum_value return sum_value foo = Foo() foo.multiplication(3, 4)
注意前缀名字变了,以及全局变量的值。
标签:通过 app 位置 mod 形式 其他 日志 全局变量 exp
原文地址:https://www.cnblogs.com/xiximayou/p/11946503.html