PySnooper - 不要再使用print進(jìn)行調(diào)試
斷點(diǎn)等調(diào)試方法雖然強(qiáng)大,但是設(shè)置比較麻煩。為此print成了很多人的最愛。
PySnooper讓你做print的事情,但不需要麻煩地添加很多語句,你只需要添加裝飾器就可以得到運(yùn)行日志,包括線運(yùn)行,及對(duì)應(yīng)變量的值。
參考資料
- 書籍:掌握Python腳本系統(tǒng)管理 Mastering Python Scripting for System Administrators - 2019.pdf
- 討論qq群630011153 144081101
- 本文最新版本地址
- 本文涉及的python測(cè)試開發(fā)庫 謝謝點(diǎn)贊!
- 本文相關(guān)海量書籍下載
- 2018最佳人工智能機(jī)器學(xué)習(xí)工具書及下載(持續(xù)更新)
- https://github.com/cool-RR/PySnooper/
實(shí)例
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)
執(zhí)行:
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
特征
如果不方便訪問stderr,則可以重定向到文件:
@pysnooper.snoop('/my/log/file.log')
查看非局部變量的值:
@pysnooper.snoop(variables=('foo.bar', 'self.whatever'))
顯示函數(shù)調(diào)用的snoop行:
@pysnooper.snoop(depth=2)
窺探指定前綴的行:
@pysnooper.snoop(prefix ='ZZZ')
安裝
pip install pysnooper