(給資料分析與開發加星標,提升資料技能)
原創整理: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 bits
else:
return [0]
number_to_bits(6)
輸出範例
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
有興趣的童鞋,請收藏:
https://github.com/cool-RR/PySnooper
朋友會在“發現-看一看”看到你“在看”的內容