SHARE
TWEET

Untitled

a guest May 23rd, 2019 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 下面项目作者写了一个函数以将数值转换为二进制码,该函数返回的是一个二进制列表。下面我们将装饰器 @pysnooper.snoop() 加到该函数上,就大功告成了。
  2.  
  3. import pysnooper
  4.  
  5. @pysnooper.snoop()
  6. def number_to_bits(number):
  7.     if number:
  8.         bits = []
  9.         while number:
  10.             number, remainder = divmod(number, 2)
  11.             bits.insert(0, remainder)
  12.         return bits
  13.     else:
  14.         return [0]
  15.  
  16. number_to_bits(6)
  17. 该函数返回的日志如下,我们可以看到在调用 number_to_bits 函数时,赋予参数 number 的初始值为 6。然后,PySnooper 就还是对着源代码一行行分析了。
  18.  
  19.  
  20. 如上分析所示,函数每创建一个新变量,那么这个变量的值、这个变量的变化都会展示出来。而且 PySnooper 还将循环展开,因此变化的细节更加明确。最终 6 的二进制版本应该是 [1, 1, 0],它的变化过程也展示在 bits 变量中。
  21.  
  22. 现在通过这些详细信息,PySnooper 再也不用担心我们用 print 函数强行 deBug 了。
  23.  
  24. PySnooper 详细特征
  25. 如果标准错误输出难以获得,或者太长了,那么可以将输出定位到本地文件:
  26.  
  27. @pysnooper.snoop('/my/log/file.log')
  28. 查看一些非本地变量的值:
  29.  
  30. @pysnooper.snoop(variables=('foo.bar', 'self.whatever'))
  31. 展示我们函数中调用函数的 snoop 行:
  32.  
  33. @pysnooper.snoop(depth=2)
  34. 将所有 snoop 行以某个前缀开始,更容易定位和找到:
  35.  
  36. @pysnooper.snoop(prefix='ZZZ ')
  37. 演示 PySnooper
  38. 下面我们最开始尝试使用 PySnooper 获取 TensorFlow 的信息,如果它能获取各种张量信息,那可就太强大了。
  39.  
  40. 首先使用 pip 安装包:
  41.  
  42. pip install pysnooper
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top