(給資料分析與開發加星標,提升資料技能)
原創整理:Python開發者(id:PythonCoder)
4 月 23 日,GitHub 每日趨勢榜第一位是一個 Python 相關專案:PySnooper。

該專案很快獲取 2200 Star。
PySnooper 是個什麼東西?

如果你寫的 Python 程式碼不能按如期那樣執行,你會絞盡腦汁想為啥出錯了。雖然你希望有支援斷點的成熟除錯器,但或許你現在不想去設定這樣的除錯器。
你想知道哪些行程式碼是正常執行,哪些行不正常。據說大多數人會在可疑位置使用 print 輸出陳述句。
其實 PySnooper 的作用有點類似,你不用小心謹慎地用 print 輸出陳述句,只需在想除錯的函式中引入一個裝飾器。然後得到函式的詳細日誌,包括運行了哪些行、何時執行,以及何時更改了區域性變數。
為什麼 PySnooper 能從其他智慧除錯工具中脫穎而出?
因為你可以在不需要進行任何設定的情況下將其用於糟糕的、龐大的企業程式碼庫中。只需開啟裝飾器(如下示例所示),並將輸出重定向到一個專用的日誌檔案,將日誌檔案路徑指定為第一個引數。
使用範例
範例是一個把數字轉成二進位制的函式。
import pysnooper.snoop()def number_to_bits(number):if number:bits = []while number:number, remainder = divmod(number, 2)bits.insert(0, remainder)return bitselse: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
有興趣的童鞋,請收藏:
https://github.com/cool-RR/PySnooper
知識星球
朋友會在“發現-看一看”看到你“在看”的內容