歡迎光臨
每天分享高質量文章

GitHub 熱門:別再用 print 輸出來除錯程式碼了

(給資料分析與開發加星標,提升資料技能

原創整理:Python開發者(id:PythonCoder)

 

4 月 23 日,GitHub 每日趨勢榜第一位是一個 Python 相關專案:PySnooper。

該專案很快獲取 2200 Star。

PySnooper 是個什麼東西?

如果你寫的 Python 程式碼不能按如期那樣執行,你會絞盡腦汁想為啥出錯了。雖然你希望有支援斷點的成熟除錯器,但或許你現在不想去設定這樣的除錯器。

你想知道哪些行程式碼是正常執行,哪些行不正常。據說大多數人會在可疑位置使用 print 輸出陳述句。

其實 PySnooper 的作用有點類似,你不用小心謹慎地用 print 輸出陳述句,只需在想除錯的函式中個裝飾器。然後得到函式的詳細日誌,包括運行了哪些行、何時執行,以及何時更改了區域性變數。

為什麼 PySnooper 能從其他智慧除錯工具中脫穎而出?

因為你可以在不需要進行任何設定的情況下將其用於糟糕的、龐大的企業程式碼庫中。只需開啟裝飾器(如下示例所示),並將輸出重定向到一個專用的日誌檔案,將日誌檔案路徑指定為第一個引數。

使用範例

範例是一個把數字轉成二進位制的函式。

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)

輸出範例

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

    已同步到看一看
    贊(0)

    分享創造快樂