GitHub 熱門:別再用 print 輸出來調試代碼了

本文給大家分享GitHub 熱門:別再用 print 輸出來調試代碼了的詳細解說,非常不錯,具有一定的參考借鑑價值,需要的朋友可以參考下

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 = 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

好了,本文就給大家介紹到這裏,希望對大家有所幫助!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章