python-pysnooper装饰器


变量追踪器?

"""
@pysnooper
日志打印工具,显示运行的时间及运行到当前代码时各变量的值,可用于装数类、函数
也可以with pysnooper.snoop(): 只打印函数里的变量
    output='a.txt'      #将结果保存到文件a.txt
    prefix='shuzf'      #打印信息前添加shuzf
    watch=("a",)        #打印变量a的值(默认只打印局部变量的值)
    watch_explode=("a",) #打印变量a的子值(默认只打印局部变量的值)   列表/字典里的值
    depth=1             #设置追踪级别默认1,若装饰函数调用了其他函数,则需要设置为2
  
"""

import pysnooper
@pysnooper.snoop(watch=("a",))
def bSort(arr):
    for i in range(len(arr)-1):
        for j in range(len(arr)-i-1):
            if arr[j] > arr[j+1]:
                arr[j],arr[j+1] = arr[j+1],arr[j]
    return arr
bSort([3,2,1])


@pysnooper.snoop(watch=("a",))
def test1(c):
    global a
    a = [1,2,3]
    def inner():
        nonlocal c
        c += 10
        print('局部变量', locals())
        print('全局变量', list({key: value} for key, value in globals().items() if ('__' not in key and 'pysnooper' not in key)))
    return inner()
test1(1)


def test2():
    lst = [i for i in range(10)]
    with pysnooper.snoop():
        lower = min(lst)
        upper = max(lst)
        mid = (lower + upper) / 2
        print(lower, mid, upper)
test2()