4 月 23 日,GitHub 每日趨勢榜第一位是一個 Python 相關(guān)項目:PySnooper。
該項目很快獲取2200 Star。
PySnooper 是個什么東西?
如果你寫的 Python 代碼不能按如期那樣運行,你會絞盡腦汁想為啥出錯了。雖然你希望有支持?jǐn)帱c的成熟調(diào)試器,但或許你現(xiàn)在不想去設(shè)置這樣的調(diào)試器。
你想知道哪些行代碼是正常運行,哪些行不正常。據(jù)說大多數(shù)人會在可疑位置使用 print 輸出語句。
其實PySnooper 的作用有點類似,你不用小心謹(jǐn)慎地用 print 輸出語句,只需在想調(diào)試的函數(shù)中引入一個裝飾器。然后得到函數(shù)的詳細(xì)日志,包括運行了哪些行、何時運行,以及何時更改了局部變量。
為什么 PySnooper 能從其他智能調(diào)試工具中脫穎而出?
因為你可以在不需要進(jìn)行任何設(shè)置的情況下將其用于糟糕的、龐大的企業(yè)代碼庫中。只需打開裝飾器(如下示例所示),并將輸出重定向到一個專用的日志文件,將日志文件路徑指定為第一個參數(shù)。
使用范例
范例是一個把數(shù)字轉(zhuǎn)成二進(jìn)制的函數(shù)。
import [email protected]()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 = 621: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 = 0Modified var:.. number = 321: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 = 1Modified var:.. remainder = 121: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 = 021: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 bits21:14:32.099769 return 10 return bits
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
803瀏覽量
42134 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4367瀏覽量
64156 -
python
+關(guān)注
關(guān)注
56文章
4823瀏覽量
86153
原文標(biāo)題:GitHub 熱門:別再用 print 輸出來調(diào)試代碼了
文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論