你還是使用print輸出日誌嗎?

PySnooper

hello,小夥們大家好,今天是給大家分享的開源項目是幫助Python開發者的debug工具,如果您正在嘗試弄清楚爲什麼您的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)
Source path:... /my_code/foo.py
Starting var:.. number = 6
15:29:11.327032 call         4 def number_to_bits(number):
15:29:11.327032 line         5     if number:
15:29:11.327032 line         6         bits = []
New var:....... bits = []
15:29:11.327032 line         7         while number:
15:29:11.327032 line         8             number, remainder = divmod(number, 2)
New var:....... remainder = 0
Modified var:.. number = 3
15:29:11.327032 line         9             bits.insert(0, remainder)
Modified var:.. bits = [0]
15:29:11.327032 line         7         while number:
15:29:11.327032 line         8             number, remainder = divmod(number, 2)
Modified var:.. number = 1
Modified var:.. remainder = 1
15:29:11.327032 line         9             bits.insert(0, remainder)
Modified var:.. bits = [1, 0]
15:29:11.327032 line         7         while number:
15:29:11.327032 line         8             number, remainder = divmod(number, 2)
Modified var:.. number = 0
15:29:11.327032 line         9             bits.insert(0, remainder)
Modified var:.. bits = [1, 1, 0]
15:29:11.327032 line         7         while number:
15:29:11.327032 line        10         return bits
15:29:11.327032 return      10         return bits
Return value:.. [1, 1, 0]

或者,如果您不想跟蹤整個函數,則可以將相關部分包裝在一個with塊中:

import pysnooper
import random

def foo():
    lst = []
    for i in range(10):
        lst.append(random.randrange(1, 1000))

    with pysnooper.snoop():
        lower = min(lst)
        upper = max(lst)
        mid = (lower + upper) / 2
        print(lower, mid, upper)

foo()
New var:....... i = 9
New var:....... lst = [681, 267, 74, 832, 284, 678, ...]
09:37:35.881721 line        10         lower = min(lst)
New var:....... lower = 74
09:37:35.882137 line        11         upper = max(lst)
New var:....... upper = 832
09:37:35.882304 line        12         mid = (lower + upper) / 2
74 453.0 832
New var:....... mid = 453.0
09:37:35.882486 line        13         print(lower, mid, upper)

安裝方法

pip install pysnooper

項目地址:https://github.com/cool-RR/PySnooper

今天的推薦不知道大家喜歡嗎?如果你們喜歡話,請在文章底部留言或點贊,以表示對我的支持,你們的留言,點贊,轉發關注是我持續更新的動力哦!

關注我的公衆號回覆:"1024",免費領取一大波學習資源,先到先得哦!

關注我免費領取學習資料

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