欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python調試神器之PySnooper

 更新時間:2021年11月11日 08:49:30   作者:Python學習與數據挖掘  
在程序開發(fā)過程中,代碼的運行往往會和我們預期的結果有所差別。于是,我們需要清楚代碼運行過程中到底發(fā)生了什么?代碼哪些模塊運行了,哪些模塊沒有運行?輸出的局部變量是什么樣的?PySnooper,能夠大大減少調試過程中的工作量

相信很多程序員在調試代碼時,都用過 print。代碼少還好說,如果是大型項目,面對眾多 print 的輸出結果,可能要頭大了。

今天推薦一個 GitHub 熱門開源項目:PySnooper。該項目推出的第一天就收獲 2000+ Star,登上了 GitHub 日榜第一位,如今有近 15k Star??梢娺@是一款 Python 開發(fā)者喜歡的工具。歡迎收藏學習、喜歡點贊支持,文末技術交流可以暢聊!

圖片

鏈接:https://github.com/cool-RR/PySnooper

PySnooper 是個什么東西?

如果你寫的 Python 代碼不能按如期那樣運行,你會絞盡腦汁想為啥出錯了。雖然你希望有支持斷點的成熟調試器,但或許你現在不想去設置這樣的調試器。

你想知道哪些行代碼是正常運行,哪些行不正常。據說大多數人會在可疑位置使用 print 輸出語句。

其實 PySnooper 的作用有點類似,你不用小心翼翼地用 print 輸出,只需在想調試的函數中引入一個裝飾器。然后得到函數的詳細日志,包括運行了哪些行、何時運行,以及何時更改了局部變量。

為什么 PySnooper 能從其他智能調試工具中脫穎而出?

因為你可以在不需要進行任何設置的情況下將其用于糟糕的、龐大的企業(yè)代碼庫中。只需打開裝飾器(如下示例所示),并將輸出重定向到一個專用的日志文件,將日志文件路徑指定為第一個參數。

PS:如果無法訪問 stderr,那可以將輸出重定向到指定文件,比如 :@pysnooper.snoop('/my/log/file.log')

使用范例

范例是一個把數字轉成二進制的函數。

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

如果你不想追蹤整個函數,那可以用 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)
Elapsed time: 00:00:00.000344

如何安裝?

最佳方式:pip

$ pip install pysnooper

其他方式:

  • Conda:$ conda install -c conda-forge pysnooper
  • Arch Linux:$ yay -S python-pysnooper
  • Fedora Linux:dnf install python3-pysnooper

技術交流

歡迎轉載、收藏、有所收獲點贊支持一下!

在這里插入圖片描述

以上就是詳解Python調試神器之PySnooper的詳細內容,更多關于Python PySnooper的資料請關注腳本之家其它相關文章!

相關文章

  • Python 查找字符在字符串中的位置實例

    Python 查找字符在字符串中的位置實例

    下面小編就為大家分享一篇Python 查找字符在字符串中的位置實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 跟老齊學Python之通過Python連接數據庫

    跟老齊學Python之通過Python連接數據庫

    現在在做python的時候需要用到數據庫,于是自己重新整理了一下數據庫的知識,并且熟悉了python中MysqlDB模塊的功能和函數等接口,現在系統地來總結一下吧
    2014-10-10
  • python中的__slots__使用示例

    python中的__slots__使用示例

    這篇文章主要介紹了python中的__slots__使用示例,__slots__用來限制class能添加的屬性,需要的朋友可以參考下
    2015-02-02
  • python property的使用技巧分享

    python property的使用技巧分享

    這篇文章主要介紹了python property的使用技巧分享,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-05-05
  • python腳本實現mp4中的音頻提取并保存在原目錄

    python腳本實現mp4中的音頻提取并保存在原目錄

    這篇文章主要介紹了python腳本實現mp4中的音頻提取并保存在原目錄,本文給大家通過實例代碼介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • python中validators庫的使用方法詳解

    python中validators庫的使用方法詳解

    這篇文章主要介紹了python中validators庫的使用方法詳解,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • python實現給數組按片賦值的方法

    python實現給數組按片賦值的方法

    這篇文章主要介紹了python實現給數組按片賦值的方法,實例分析了Python在指定位置進行賦值的相關技巧,需要的朋友可以參考下
    2015-07-07
  • Python 中的 else詳解

    Python 中的 else詳解

    這篇文章主要介紹了Python 中的 else詳解的相關資料,需要的朋友可以參考下
    2016-04-04
  • Python基礎之tkinter圖形化界面學習

    Python基礎之tkinter圖形化界面學習

    這篇文章主要介紹了Python基礎之tkinter圖形化界面學習,文中有非常詳細的代碼示例,對正在學習python基礎的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 使用Python+Flask開發(fā)博客項目并實現內網穿透

    使用Python+Flask開發(fā)博客項目并實現內網穿透

    Flask是一個使用python編寫的輕量級Web框架,這篇文章我們將使用這個框架編寫一個屬于自己的博客網站!并教你如何通過使用內網穿透工具處理項目,讓本地的項目可以在公網訪問,感興趣的可以了解一下
    2021-11-11

最新評論