GitHub 熱門:別再用 print 輸出來除錯程式碼了
(給Python開發者加星標,提升Python技能)
原創整理: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
推薦閱讀
(點選標題可跳轉閱讀)
GitHub 熱門:微軟新開源的 Python 靜態型別檢查器
覺得本文對你有幫助?請分享給更多人
關注「Python開發者」加星標,提升Python技能
好文章,我在看❤️
相關文章
- 鐳速傳輸升級,別再用Email和FTP傳輸檔案了AIFTP
- 分析了 7500w+ GitHub 程式碼倉庫 哪門語言熱度最高?Github
- 發現了一個標籤可用來輸出html程式碼HTML
- Java除錯大法,來了~Java除錯
- 告別Print,使用IceCream進行高效的Python除錯Python除錯
- Python print函式用法,print 格式化輸出Python函式
- 好程式設計師寫出來的程式碼,就叫好程式碼嗎?你錯了!程式設計師
- php除錯——輸出變數值PHP除錯變數
- 程式碼除錯-入門、實踐到原理除錯
- Debug模式應用程式輸出Debug除錯資訊模式除錯
- 使用pycharm print不輸出怎麼辦PyCharm
- 直播平臺原始碼,JavaScript 的四種除錯輸出方式原始碼JavaScript除錯
- GDB 除錯程式碼除錯
- Python 程式碼除錯—使用 pdb 除錯Python除錯
- Python 3 進階 —— print 列印和輸出Python
- PHP中的輸出:echo、print、printf、sprintf、pPHP
- 內建10000+Github 熱門程式碼庫,百度正式釋出Comate程式碼知識增強2.0Github
- Github上最熱門的Java專案終於開源了!GithubJava
- udev如何除錯,如何看udev的輸出日誌?udev除錯的坑?dev除錯
- 別再用同一個密碼了 這黑客“撞庫”竊密已獲利百萬密碼黑客
- 如何用python3輸出print對齊?Python
- vue 程式碼除錯神器Vue除錯
- 初次Push程式碼到Github報錯Github
- 將程式碼中的除錯資訊輸出到日誌檔案中除錯
- tp5 前端程式碼原樣輸出 html原始碼輸出 原始碼被輸出前端HTML原始碼
- Github上fork了別人的專案之後如何同步程式碼Github
- GitHub學習除錯記錄Github除錯
- 熱門API介面它來啦 新鮮出爐API
- VS Code除錯C程式碼除錯C程式
- GDB程式碼除錯與使用除錯
- Python 程式碼除錯技巧Python除錯
- 利用chrome除錯JavaScript程式碼Chrome除錯JavaScript
- 程式碼執行除錯框除錯
- GitHub迎來史上最大產品變革:釋出可直接執行程式碼的GitHub ActionsGithub行程
- 別再用程式碼開發了!整理了30套精美視覺化大屏模板,零套路直接領視覺化
- 別再用老舊架構了!單元化構建超強彈性和容錯系統!架構
- 小紅書實時熱搜排行榜在哪看?熱門筆記技巧來了筆記
- 求求你別再用OkHttp呼叫API介面了,快來試試這款HTTP客戶端庫吧HTTPAPI客戶端