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

詳解DeBug Python神級(jí)工具PySnooper

 更新時(shí)間:2019年07月03日 10:19:36   作者:今夜睡火星  
這篇文章主要介紹了詳解DeBug Python神級(jí)工具PySnooper,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

PySnooper 在 GitHub 上自嘲是一個(gè)“乞丐版”調(diào)試工具(poor man's debugger)。

一般情況下,在編寫(xiě) Python 代碼時(shí),如果想弄清楚為什么 Python 代碼沒(méi)有按照預(yù)期執(zhí)行、哪些代碼在運(yùn)行哪些沒(méi)在運(yùn)行、局部變量又是什么,我們會(huì)使用包含斷點(diǎn)和觀察模式等功能的調(diào)試器,或者直接使用 print 語(yǔ)句打印出來(lái)。

但上面的方法都比較麻煩,例如使用調(diào)試器需要進(jìn)行繁瑣的設(shè)置,使用 print 打印也要很仔細(xì)。與它們相比,使用 PySnooper 只需為要調(diào)試的函數(shù)添加一個(gè)裝飾器即可,這樣就能獲得運(yùn)行函數(shù)詳細(xì)的 log,包括執(zhí)行的代碼行和執(zhí)行時(shí)間,以及局部變量發(fā)生變化的確切時(shí)間。

之所以稱(chēng)為“乞丐版”,相信是因?yàn)?PySnooper 使用起來(lái)十分簡(jiǎn)單,開(kāi)發(fā)者可以在任何龐大的代碼庫(kù)中使用它,而無(wú)需進(jìn)行任何設(shè)置。只需添加裝飾器,并為日志輸出地址指定路徑。

GitHub項(xiàng)目地址

安裝

pip3 install 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)

返回日志如下

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

PySnooper特征

如果標(biāo)準(zhǔn)錯(cuò)誤輸出難以獲得,或者太長(zhǎng)了,那么可以將輸出定位到本地文件:

@pysnooper.snoop('/my/log/file.log')

查看一些非本地變量的值:

@pysnooper.snoop(variables=('foo.bar', 'self.whatever'))

展示我們函數(shù)中調(diào)用函數(shù)的 snoop 行:

@pysnooper.snoop(depth=2)

將所有 snoop 行以某個(gè)前綴開(kāi)始,更容易定位和找到:

@pysnooper.snoop(prefix='ZZZ ')

更可以用來(lái)獲取TensorFlow 的各種張量信息,十分強(qiáng)大。媽媽再也不用擔(dān)心我找不到bug啦!
(2019.5.7更新:有時(shí)會(huì)不起作用,不知是自己姿勢(shì)不對(duì)還是其他原因。)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python urllib3軟件包的使用說(shuō)明

    Python urllib3軟件包的使用說(shuō)明

    這篇文章主要介紹了Python urllib3軟件包的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • python利用opencv實(shí)現(xiàn)SIFT特征提取與匹配

    python利用opencv實(shí)現(xiàn)SIFT特征提取與匹配

    這篇文章主要為大家詳細(xì)介紹了python利用opencv實(shí)現(xiàn)SIFT特征提取與匹配,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • YOLOv5改進(jìn)之添加SE注意力機(jī)制的詳細(xì)過(guò)程

    YOLOv5改進(jìn)之添加SE注意力機(jī)制的詳細(xì)過(guò)程

    作為當(dāng)前先進(jìn)的深度學(xué)習(xí)目標(biāo)檢測(cè)算法YOLOv5,已經(jīng)集合了大量的trick,但是還是有提高和改進(jìn)的空間,針對(duì)具體應(yīng)用場(chǎng)景下的檢測(cè)難點(diǎn),可以不同的改進(jìn)方法,下面這篇文章主要給大家介紹了關(guān)于YOLOv5改進(jìn)之添加SE注意力機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Python數(shù)據(jù)分析入門(mén)之教你怎么搭建環(huán)境

    Python數(shù)據(jù)分析入門(mén)之教你怎么搭建環(huán)境

    本篇文章要有一定的Python基礎(chǔ),知道列表,字符串,函數(shù)等的用法. 文中有非常詳細(xì)的代碼示例,對(duì)正在入門(mén)python數(shù)據(jù)分析的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Python如何給函數(shù)庫(kù)增加日志功能

    Python如何給函數(shù)庫(kù)增加日志功能

    這篇文章主要介紹了Python如何給函數(shù)庫(kù)增加日志功能,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • django框架事務(wù)處理小結(jié)【ORM 事務(wù)及raw sql,customize sql 事務(wù)處理】

    django框架事務(wù)處理小結(jié)【ORM 事務(wù)及raw sql,customize sql 事務(wù)處理】

    這篇文章主要介紹了django框架事務(wù)處理,結(jié)合實(shí)例形式總結(jié)分析了使用ORM 事務(wù)及raw sql,customize sql 事務(wù)處理相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2019-06-06
  • python中requests模擬登錄的三種方式(攜帶cookie/session進(jìn)行請(qǐng)求網(wǎng)站)

    python中requests模擬登錄的三種方式(攜帶cookie/session進(jìn)行請(qǐng)求網(wǎng)站)

    這篇文章主要介紹了python中requests模擬登錄的三種方式(攜帶cookie/session進(jìn)行請(qǐng)求網(wǎng)站),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python?的矩陣傳播機(jī)制Broadcasting和矩陣運(yùn)算

    Python?的矩陣傳播機(jī)制Broadcasting和矩陣運(yùn)算

    這篇文章主要介紹了Python?的矩陣傳播機(jī)制Broadcasting和矩陣運(yùn)算,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • python中import和from-import的區(qū)別解析

    python中import和from-import的區(qū)別解析

    這篇文章主要介紹了python中import和from-import的區(qū)別解析,本文通過(guò)實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Python并發(fā)多線程的具體操作步驟

    Python并發(fā)多線程的具體操作步驟

    并發(fā)指的是任務(wù)數(shù)多余cpu核數(shù),通過(guò)操作系統(tǒng)的各種任務(wù)調(diào)度算法,實(shí)現(xiàn)用多任務(wù)一起執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于Python并發(fā)多線程的具體操作步驟的相關(guān)資料,需要的朋友可以參考下
    2024-02-02

最新評(píng)論