GitHub 熱門:別再用 print 輸出來調(diào)試代碼了
4 月 23 日,GitHub 每日趨勢(shì)榜第一位是一個(gè) Python ,相關(guān)項(xiàng)目:PySnooper。
該項(xiàng)目很快獲取 2200 Star。
PySnooper 是個(gè)什么東西?
如果你寫的 Python 代碼不能按如期那樣運(yùn)行,你會(huì)絞盡腦汁想為啥出錯(cuò)了。雖然你希望有支持?jǐn)帱c(diǎn)的成熟調(diào)試器,但或許你現(xiàn)在不想去設(shè)置這樣的調(diào)試器。
你想知道哪些行代碼是正常運(yùn)行,哪些行不正常。據(jù)說大多數(shù)人會(huì)在可疑位置使用 print 輸出語句。
其實(shí) PySnooper 的作用有點(diǎn)類似,你不用小心謹(jǐn)慎地用 print 輸出語句,只需在想調(diào)試的函數(shù)中引入一個(gè)裝飾器。然后得到函數(shù)的詳細(xì)日志,包括運(yùn)行了哪些行、何時(shí)運(yùn)行,以及何時(shí)更改了局部變量。
為什么 PySnooper 能從其他智能調(diào)試工具中脫穎而出?
因?yàn)槟憧梢栽诓恍枰M(jìn)行任何設(shè)置的情況下將其用于糟糕的、龐大的企業(yè)代碼庫中。只需打開裝飾器(如下示例所示),并將輸出重定向到一個(gè)專用的日志文件,將日志文件路徑指定為第一個(gè)參數(shù)。
使用范例
范例是一個(gè)把數(shù)字轉(zhuǎn)成二進(jì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
有興趣的童鞋,請(qǐng)收藏:
https://github.com/cool-RR/PySnooper
好了,本文就給大家介紹到這里,希望對(duì)大家有所幫助!
相關(guān)文章
如何將服務(wù)器上的python代碼通過QQ發(fā)送回傳信息(附實(shí)現(xiàn)方法)
這篇文章主要介紹了我將服務(wù)器上的python代碼通過QQ發(fā)送回傳信息(附實(shí)現(xiàn)方法),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05git?push?origin?HEAD:refs/for/master?的意思分析
這篇文章主要介紹了git?push?origin?HEAD:refs/for/master?的意思,補(bǔ)充介紹了git?提交代碼常用命令,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01Mac下更換Homebrew鏡像源的實(shí)現(xiàn)方法
本文主要介紹了Mac下更換Homebrew鏡像源的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07解決MobaXterm連接報(bào)錯(cuò)Network error:Connection timed 
這篇文章主要介紹了解決MobaXterm連接報(bào)錯(cuò)Network error:Connection timed out問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Hadoop框架起步之圖解SSH、免密登錄原理和實(shí)現(xiàn)方法
這篇文章主要介紹了Hadoop框架起步之圖解SSH、免密登錄原理和實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07