• 使用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

  • 相关阅读:
    pt-online-schema-change使用
    MySQL8.0哪些新特性你最期待
    第11章:使用Python打造MySQL专家系统
    第10章:深入浅出Ansible
    第9章:Python自动化管理
    第8章:网络
    自己在Java学习中遇到的一些遗漏小知识点
    Java语言程序设计与数据结构(梁勇版) 基础版 课后习题 第三章
    Java多态小知识
    Java继承与抽象类小知识以及super,this关键字用法
  • 原文地址:https://www.cnblogs.com/nica/p/11956533.html
Copyright © 2020-2023  润新知