pysnooper的基本使用
pysnooper主要是使用装饰器的形式进行函数的处理;
'''
When you decorate a function with `@pysnooper.snoop()`
or wrap a block of code in `with pysnooper.snoop():`, you'll get a log of
every line that ran in the function and a play-by-play of every local
variable that changed.
当您使用“@pysnoop .snoop()”装饰函数时或者在' with pysnoop .snoop(): '中封装一个代码块,
您将得到一个日志函数中运行的每一行以及每个局部的逐行运行变量发生了变化。
If stderr is not easily accessible for you, you can redirect the output to
a file::可以将输出重定向到一个文件:
@pysnooper.snoop('/my/log/file.log')
See values of some expressions that aren't local variables::
查看一些非局部变量表达式的值:
@pysnooper.snoop(watch=('foo.bar', 'self.x["whatever"]'))
Expand values to see all their attributes or items of lists/dictionaries:
@pysnooper.snoop(watch_explode=('foo', 'self'))
(see Advanced Usage in the README for more control)
Show snoop lines for functions that your function calls::
显示函数调用的函数的snoop行::
@pysnooper.snoop(depth=2)
Start all snoop lines with a prefix, to grep for them easily::
添加前缀,方便进行多个函数之间的区别:
@pysnooper.snoop(prefix='ZZZ ')
On multi-threaded apps identify which thread are snooped in output::
@pysnooper.snoop(thread_info=True)
Customize how values are represented as strings::
@pysnooper.snoop(custom_repr=((type1, custom_repr_func1), (condition2, custom_repr_func2), ...))
'''
@pysnoop .snoop()
@pysnooper.snoop()
def number_to_bits_1(number):
if number:
bits = []
while number:
number, remainder = divmod(number, 2)
bits.insert(0, remainder)
return bits
else:
return [0]
number_to_bits_1(6)
-------------------------------------------------------------
Starting var:.. number = 6
16:33:41.396554 call 12 def number_to_bits_1(number):
16:33:41.397055 line 13 if number:
16:33:41.397055 line 14 bits = []
New var:....... bits = []
16:33:41.397055 line 15 while number:
16:33:41.397055 line 16 number, remainder = divmod(number, 2)
Modified var:.. number = 3
New var:....... remainder = 0
16:33:41.397055 line 17 bits.insert(0, remainder)
Modified var:.. bits = [0]
16:33:41.397055 line 15 while number:
16:33:41.397055 line 16 number, remainder = divmod(number, 2)
Modified var:.. number = 1
Modified var:.. remainder = 1
16:33:41.397055 line 17 bits.insert(0, remainder)
Modified var:.. bits = [1, 0]
16:33:41.397055 line 15 while number:
16:33:41.397055 line 16 number, remainder = divmod(number, 2)
Modified var:.. number = 0
16:33:41.397556 line 17 bits.insert(0, remainder)
Modified var:.. bits = [1, 1, 0]
16:33:41.397556 line 15 while number:
16:33:41.397556 line 18 return bits
16:33:41.397556 return 18 return bits
Return value:.. [1, 1, 0]
** @pysnooper.snoop(’/logs/file.log’)**
@pysnooper.snoop('/logs/file.log')
def number_to_bits_2(number):
if number:
bits = []
while number:
number, remainder = divmod(number, 2)
bits.insert(0, remainder)
return bits
else:
return [0]
number_to_bits_2(6)
@pysnooper.snoop(prefix='number_to_bits_3 ') 给调试的行加个前缀名便于辨识和定位
@pysnooper.snoop(prefix='number_to_bits_3: ')
def number_to_bits_3(number):
if number:
bits = []
while number:
number, remainder = divmod(number, 2)
bits.insert(0, remainder)
return bits
else:
return [0]
number_to_bits_3(6)
--------------------------------------------------------
number_to_bits_3: Starting var:.. number = 6
number_to_bits_3: 16:33:41.403571 call 36 def number_to_bits_3(number):
number_to_bits_3: 16:33:41.403571 line 37 if number:
number_to_bits_3: 16:33:41.404073 line 38 bits = []
number_to_bits_3: New var:....... bits = []
number_to_bits_3: 16:33:41.404073 line 39 while number:
number_to_bits_3: 16:33:41.404073 line 40 number, remainder = divmod(number, 2)
number_to_bits_3: Modified var:.. number = 3
number_to_bits_3: New var:....... remainder = 0
number_to_bits_3: 16:33:41.404073 line 41 bits.insert(0, remainder)
number_to_bits_3: Modified var:.. bits = [0]
number_to_bits_3: 16:33:41.404073 line 39 while number:
number_to_bits_3: 16:33:41.404073 line 40 number, remainder = divmod(number, 2)
number_to_bits_3: Modified var:.. number = 1
number_to_bits_3: Modified var:.. remainder = 1
number_to_bits_3: 16:33:41.404073 line 41 bits.insert(0, remainder)
number_to_bits_3: Modified var:.. bits = [1, 0]
number_to_bits_3: 16:33:41.404073 line 39 while number:
number_to_bits_3: 16:33:41.404073 line 40 number, remainder = divmod(number, 2)
number_to_bits_3: Modified var:.. number = 0
number_to_bits_3: 16:33:41.404073 line 41 bits.insert(0, remainder)
number_to_bits_3: Modified var:.. bits = [1, 1, 0]
number_to_bits_3: 16:33:41.404073 line 39 while number:
number_to_bits_3: 16:33:41.404073 line 42 return bits
number_to_bits_3: 16:33:41.404073 return 42 return bits
number_to_bits_3: Return value:.. [1, 1, 0]