最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解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í)間。

之所以稱為“乞丐版”,相信是因?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創(chuàng)建xml文件示例

    Python創(chuàng)建xml文件示例

    這篇文章主要介紹了Python創(chuàng)建xml文件的方法,結(jié)合實(shí)例形式分析了Python針對(duì)xml格式數(shù)據(jù)及文件讀寫(xiě)相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • 老生常談python字典用法

    老生常談python字典用法

    python 創(chuàng)建字典可以使用 dict 函數(shù),或者使用花括號(hào),用花括號(hào)的方式更為常見(jiàn)。本文給大家介紹python字典用法,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • Python 窗體(tkinter)下拉列表框(Combobox)實(shí)例

    Python 窗體(tkinter)下拉列表框(Combobox)實(shí)例

    這篇文章主要介紹了Python 窗體(tkinter)下拉列表框(Combobox)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python的getattr函數(shù)方法學(xué)習(xí)使用示例

    Python的getattr函數(shù)方法學(xué)習(xí)使用示例

    這篇文章主要為大家介紹了Python的getattr方法學(xué)習(xí)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Python中字符串類型代碼的執(zhí)行函數(shù)——eval()、exec()和compile()詳解

    Python中字符串類型代碼的執(zhí)行函數(shù)——eval()、exec()和compile()詳解

    這篇文章主要介紹了Python中字符串類型代碼的執(zhí)行函數(shù)——eval()、exec()和compile(),字符串類型代碼的執(zhí)行函數(shù)有三個(gè),都是Python的內(nèi)置函數(shù),下面逐一對(duì)這三個(gè)函數(shù)詳細(xì)講解,需要的朋友可以參考下
    2023-02-02
  • Python使用sqlalchemy實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)的幫助類

    Python使用sqlalchemy實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)的幫助類

    這篇文章主要為大家詳細(xì)介紹了Python如何使用sqlalchemy實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)的幫助類,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考下
    2024-02-02
  • python中的getter與setter你了解嗎

    python中的getter與setter你了解嗎

    這篇文章主要為大家詳細(xì)介紹了python中的getter與setter,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • Python之變量類型詳解

    Python之變量類型詳解

    這篇文章主要介紹了Python之變量類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 關(guān)于Flask 上下文詳細(xì)介紹

    關(guān)于Flask 上下文詳細(xì)介紹

    這篇文章主要給大家分享了關(guān)于Flask 上下文詳細(xì)介紹,我們可以把上下文理解為當(dāng)前環(huán)境的快照,是一個(gè)用來(lái)保存狀態(tài)的對(duì)象。在代碼執(zhí)行的某個(gè)時(shí)刻,根據(jù)上下文的代碼邏輯,可以決定在當(dāng)前時(shí)刻下使用到的環(huán)境變量等。下面一起進(jìn)入文章了解詳情內(nèi)容,需要的朋友也可以參考一下
    2021-11-11
  • Python實(shí)現(xiàn)在Linux系統(tǒng)下更改當(dāng)前進(jìn)程運(yùn)行用戶

    Python實(shí)現(xiàn)在Linux系統(tǒng)下更改當(dāng)前進(jìn)程運(yùn)行用戶

    這篇文章主要介紹了Python實(shí)現(xiàn)在Linux系統(tǒng)下更改當(dāng)前進(jìn)程運(yùn)行用戶,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-02-02

最新評(píng)論

吕梁市| 上林县| 建湖县| 阿克| 新乡市| 元阳县| 错那县| 霸州市| 榆树市| 井冈山市| 阳东县| 尼木县| 游戏| 屏边| 凉城县| 怀柔区| 万山特区| 阿克| 武功县| 四川省| 晋江市| 福建省| 交城县| 安西县| 苍山县| 车致| 赫章县| 井研县| 章丘市| 体育| 灌阳县| 长白| 天全县| 孟州市| 北川| 巫溪县| 仙居县| 上林县| 昌平区| 永康市| 许昌县|