• 使用PySnooper记录查看代码运行过程日志,断点调试之外的又一选择


    如果你写的 Python 代码不能按如期那样运行,你会绞尽脑汁想为啥出错了。虽然你希望有支持断点的成熟调试器,但或许你现在不想去设置这样的调试器。


    你想知道哪些行代码是正常运行,哪些行不正常。据说大多数人会在可疑位置使用 print 输出语句。


    其实 PySnooper 的作用有点类似,你不用小心谨慎地用 print 输出语句,只需在想调试的函数中引入一个装饰器。然后得到函数的详细日志,包括运行了哪些行、何时运行,以及何时更改了局部变量。


    为什么 PySnooper 能从其他智能调试工具中脱颖而出?


    因为你可以在不需要进行任何设置的情况下将其用于糟糕的、庞大的企业代码库中。只需打开装饰器(如下示例所示),并将输出重定向到一个专用的日志文件,将日志文件路径指定为第一个参数。


    使用范例


    范例是一个把数字转成二进制的函数。

    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)


    输出范例

    Starting var:.. number = 6
    21:14:32.099769 call         3 @pysnooper.snoop()
    21:14:32.099769 line         5     if number:
    21:14:32.099769 line         6         bits = []
    New var:....... bits = []
    21:14:32.099769 line         7         while number:
    21:14:32.099769 line         8             number, remainder = divmod(number, 2)
    New var:....... remainder = 0
    Modified var:.. number = 3
    21:14:32.099769 line         9             bits.insert(0, remainder)
    Modified var:.. bits = [0]
    21:14:32.099769 line         7         while number:
    21:14:32.099769 line         8             number, remainder = divmod(number, 2)
    Modified var:.. number = 1
    Modified var:.. remainder = 1
    21:14:32.099769 line         9             bits.insert(0, remainder)
    Modified var:.. bits = [1, 0]
    21:14:32.099769 line         7         while number:
    21:14:32.099769 line         8             number, remainder = divmod(number, 2)
    Modified var:.. number = 0
    21:14:32.099769 line         9             bits.insert(0, remainder)
    Modified var:.. bits = [1, 1, 0]
    21:14:32.099769 line         7         while number:
    21:14:32.099769 line        10         return bits
    21:14:32.099769 return      10         return bits


    有兴趣的童鞋,请收藏:

    https://github.com/cool-RR/PySnooper

  • 相关阅读:
    IntelliJ IDEA 偏好设置
    Unix环境下的5中IO模型
    Hbase原理、基本概念、基本架构
    可参考的技术博客
    Hadoop生态系统介绍
    oracle 添加表分区和索引分区,修改索引分区默认表空间
    koa redis 链接
    Node-APN 开源推送服务
    NodeJs 笔记
    windows防火墙无法启动,服务不存在
  • 原文地址:https://www.cnblogs.com/nica/p/11956533.html
Copyright © 2020-2023  润新知