GitHub 熱門:別再用 print 輸出來調(diào)試代碼了
4 月 23 日,GitHub 每日趨勢榜第一位是一個 Python ,相關(guān)項目:PySnooper。

該項目很快獲取 2200 Star。
PySnooper 是個什么東西?

如果你寫的 Python 代碼不能按如期那樣運行,你會絞盡腦汁想為啥出錯了。雖然你希望有支持?jǐn)帱c的成熟調(diào)試器,但或許你現(xiàn)在不想去設(shè)置這樣的調(diào)試器。
你想知道哪些行代碼是正常運行,哪些行不正常。據(jù)說大多數(shù)人會在可疑位置使用 print 輸出語句。
其實 PySnooper 的作用有點類似,你不用小心謹(jǐn)慎地用 print 輸出語句,只需在想調(diào)試的函數(shù)中引入一個裝飾器。然后得到函數(shù)的詳細日志,包括運行了哪些行、何時運行,以及何時更改了局部變量。
為什么 PySnooper 能從其他智能調(diào)試工具中脫穎而出?
因為你可以在不需要進行任何設(shè)置的情況下將其用于糟糕的、龐大的企業(yè)代碼庫中。只需打開裝飾器(如下示例所示),并將輸出重定向到一個專用的日志文件,將日志文件路徑指定為第一個參數(shù)。
使用范例
范例是一個把數(shù)字轉(zhuǎn)成二進制的函數(shù)。
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
好了,本文就給大家介紹到這里,希望對大家有所幫助!
相關(guān)文章
Loongnix安裝PyCharm Community 2020.2.3的教程詳解
這篇文章主要介紹了Loongnix安裝PyCharm Community 2020.2.3的教程詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
詳解DES&3DES算法的原理以及C#和JS的實現(xiàn)
DES?全稱為?Data?Encryption?Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法。3DES?算法通過對?DES?算法進行改進,增加?DES?的密鑰長度來避免類似的攻擊。本文就來聊聊它們的原理與實現(xiàn)吧2023-03-03
JetPack開發(fā)中使用CameraX完成拍照和拍視頻功能
CameraX 是一個 Google 推出的 JetPack 組件。今天給大家分享JetPack之使用CameraX完成拍照和拍視頻,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2020-06-06
Window下安裝JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程圖解
這篇文章主要介紹了Window下安裝JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11
盤點網(wǎng)絡(luò)編程必須要知道的基礎(chǔ)知識
這篇文章主要介紹了盤點網(wǎng)絡(luò)編程必須要知道的基礎(chǔ)知識,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-07-07
利用ChatGPT與MindShow制作一個PPT的方法詳解
PPT制作是商務(wù)、教育和各種場合演講的重要組成部分,然而,很多人會花費大量時間和精力在內(nèi)容生成和視覺設(shè)計方面,為了解決這個問題,我們可以利用兩個強大的工具——ChatGPT和MindShow,來提高制作PPT的效率,感興趣的同學(xué)可以參考閱讀2023-06-06
在CODEIGNITER中 在CI中引入外部的JS與CSS呢
其實不管是在用CI還是ZF都有同樣一個問題,就是路徑的問題。前期,我在用ZF做CMS時,我在.htaccess文件中設(shè)置了如遇到j(luò)s,css,img等資源文件都不重定向。2009-07-07

