亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python調(diào)試神器PySnooper的使用

系統(tǒng) 2014 0

相信很多小伙伴平時(shí)寫python的時(shí)候都是需要調(diào)試程序的,出問(wèn)題了,需要了解函數(shù)內(nèi)部是怎么跑的,而這個(gè)時(shí)候很多人都會(huì)想到在疑惑的地方使用print函數(shù)來(lái)打印一下參數(shù)來(lái)調(diào)試。雖然用print也是不失為是一種方法,但是有時(shí)如果疑惑的地方多就要每個(gè)地方都要加print,這樣就顯得比較麻煩了。

今天發(fā)現(xiàn)在Github開(kāi)源了一個(gè)神器,可以清楚讓你清楚了解函數(shù)內(nèi)部的運(yùn)行以及參數(shù)值的變化,PySnooper,項(xiàng)目地址:https://github.com/cool-RR/PySnooper

使用簡(jiǎn)單,強(qiáng)大,誰(shuí)用誰(shuí)知道它的好!下面簡(jiǎn)單說(shuō)一下PySnooper的用法:

這個(gè)工具使用起來(lái)很簡(jiǎn)單,首先直接可以使用 pip 安裝:pip install pysnooper使用時(shí),只需要在每個(gè)函數(shù)前面添加裝飾器即可。
給個(gè)簡(jiǎn)單例子看看就知道了,

            
import pysnooper
@pysnooper.snoop()
def removeDuplicates(nums):
  """
  :type nums: List[int]
  :rtype: int
  """
  flag = 0
  i=1
  while i
            
              =2:
        del nums[i-1]
        i-=1
    else:
      i+=1
      flag=0
  return len(nums)

nums = [1,1,1,2]
print(removeDuplicates(nums))


            
          

添加裝飾器后,運(yùn)行代碼就會(huì)輸出對(duì)應(yīng)函數(shù)的執(zhí)行數(shù)據(jù)

Starting var:.. nums = [1, 1, 1, 2]
13:03:44.990194 call??????? 11 def removeDuplicates(nums):
13:03:44.990695 line??????? 16???? flag = 0
New var:....... flag = 0
13:03:44.990695 line??????? 17???? i=1
New var:....... i = 1
13:03:44.990695 line??????? 18???? while i 13:03:44.990695 line??????? 19???????? if nums[i]==nums[i-1]:
13:03:44.990695 line??????? 20???????????? flag+=1
Modified var:.. flag = 1
13:03:44.990695 line??????? 21???????????? i+=1
Modified var:.. i = 2
13:03:44.991193 line??????? 22???????????? if flag>=2:
13:03:44.991193 line??????? 18???? while i 13:03:44.991193 line??????? 19???????? if nums[i]==nums[i-1]:
13:03:44.991193 line??????? 20???????????? flag+=1
Modified var:.. flag = 2
13:03:44.991193 line??????? 21???????????? i+=1
Modified var:.. i = 3
13:03:44.991193 line??????? 22???????????? if flag>=2:
13:03:44.991193 line??????? 23???????????????? del nums[i-1]
Modified var:.. nums = [1, 1, 2]
13:03:44.991193 line??????? 24???????????????? i-=1
Modified var:.. i = 2
13:03:44.991193 line??????? 18???? while i 13:03:44.991193 line??????? 19???????? if nums[i]==nums[i-1]:
13:03:44.991193 line??????? 26???????????? i+=1
Modified var:.. i = 3
13:03:44.991693 line??????? 27???????????? flag=0
Modified var:.. flag = 0
13:03:44.991693 line??????? 18???? while i 13:03:44.991693 line??????? 28???? return len(nums)
13:03:44.991693 return????? 28???? return len(nums)
Return value:.. 3

當(dāng)然如果嫌棄這個(gè)直接輸出內(nèi)容還想保存日志記錄的話,這個(gè)裝飾器還幾個(gè)可選參數(shù),例如:

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

先創(chuàng)建好log目錄,然后將日志輸出到file文件中。

            
@pysnooper.snoop(prefix='removeDuplicates: ')
          

給調(diào)試的行加個(gè)前綴名便于辨識(shí)和定位,這個(gè)參數(shù)適用于如果同時(shí)調(diào)試多個(gè)函數(shù)使用,我這里的例子是使用了函數(shù)名稱來(lái)作為前綴名,摘抄一點(diǎn)日志記錄如下:

            
removeDuplicates: Starting var:.. nums = [1, 1, 1, 2]
removeDuplicates: 13:53:14.322036 call    11 def removeDuplicates(nums):
removeDuplicates: 13:53:14.323037 line    16   flag = 0
          
            
@pysnooper.snoop(variables=('foo.bar', 'self.whatever'))
          

查看非本地變量

            
@pysnooper.snoop(depth=2)
          

顯示函數(shù)中調(diào)用函數(shù)的snoop行,depth參數(shù)的取值范圍是大于或等于1的正整數(shù),在源碼里有這樣一個(gè)判斷:assert self.depth >= 1,當(dāng)取小于1的值就會(huì)拋異常

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 热久久最新地址 | 久草在线视频免费资源观看 | 久久www免费人成精品香蕉 | 亚洲图欧美日韩色综合图 | 国产成人91精品 | 97s色视频一区二区三区在线 | 日日骚 | 欧美成人在线免费 | 日韩欧美色 | 精品国产www| 日韩欧美亚洲国产 | 一级毛片欧美一级日韩黄 | 欧美性色黄大片一级毛片视频 | 天天干天天爽天天射 | 亚洲麻豆国产精品 | 久久久高清免费视频 | 国产精品高清在线观看地址 | 日本在线小视频 | japanese护士奶水 | 717影院理论午夜伦八戒 | 九九热在线视频免费观看 | 香蕉视频免费在线播放 | 国产亚洲第一 | 久久福利青草精品资源站免费 | 日本中文字幕不卡 | 天天操欧美 | 欧美日韩国产高清一区二区三区 | 久久制服诱惑 | 日韩精品亚洲一级在线观看 | 天天久久狠狠色综合 | 91久久精品国产亚洲 | 日韩欧美精品有码在线观看 | 456性欧美欧美在线视频 | 久久一色本道亚洲 | 亚洲人和日本人hd | 久青草免费视频手机在线观看 | 久久www免费人成看片入口 | 亚拍精品一区二区三区 | 日日干夜夜艹 | 国产激情一区二区三区成人91 | 日本一级看片免费播放 |