Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 下面项目作者写了一个函数以将数值转换为二进制码,该函数返回的是一个二进制列表。下面我们将装饰器 @pysnooper.snoop() 加到该函数上,就大功告成了。
- 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)
- 该函数返回的日志如下,我们可以看到在调用 number_to_bits 函数时,赋予参数 number 的初始值为 6。然后,PySnooper 就还是对着源代码一行行分析了。
- 如上分析所示,函数每创建一个新变量,那么这个变量的值、这个变量的变化都会展示出来。而且 PySnooper 还将循环展开,因此变化的细节更加明确。最终 6 的二进制版本应该是 [1, 1, 0],它的变化过程也展示在 bits 变量中。
- 现在通过这些详细信息,PySnooper 再也不用担心我们用 print 函数强行 deBug 了。
- PySnooper 详细特征
- 如果标准错误输出难以获得,或者太长了,那么可以将输出定位到本地文件:
- @pysnooper.snoop('/my/log/file.log')
- 查看一些非本地变量的值:
- @pysnooper.snoop(variables=('foo.bar', 'self.whatever'))
- 展示我们函数中调用函数的 snoop 行:
- @pysnooper.snoop(depth=2)
- 将所有 snoop 行以某个前缀开始,更容易定位和找到:
- @pysnooper.snoop(prefix='ZZZ ')
- 演示 PySnooper
- 下面我们最开始尝试使用 PySnooper 获取 TensorFlow 的信息,如果它能获取各种张量信息,那可就太强大了。
- 首先使用 pip 安装包:
- pip install pysnooper
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement