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

python調試神器PySnooper的使用

系統 1783 0

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

今天發現在Github開源了一個神器,可以清楚讓你清楚了解函數內部的運行以及參數值的變化,PySnooper,項目地址:https://github.com/cool-RR/PySnooper

使用簡單,強大,誰用誰知道它的好!下面簡單說一下PySnooper的用法:

這個工具使用起來很簡單,首先直接可以使用 pip 安裝:pip install pysnooper使用時,只需要在每個函數前面添加裝飾器即可。
給個簡單例子看看就知道了,

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


            
          

添加裝飾器后,運行代碼就會輸出對應函數的執行數據

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

當然如果嫌棄這個直接輸出內容還想保存日志記錄的話,這個裝飾器還幾個可選參數,例如:

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

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

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

給調試的行加個前綴名便于辨識和定位,這個參數適用于如果同時調試多個函數使用,我這里的例子是使用了函數名稱來作為前綴名,摘抄一點日志記錄如下:

            
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)
          

顯示函數中調用函數的snoop行,depth參數的取值范圍是大于或等于1的正整數,在源碼里有這樣一個判斷:assert self.depth >= 1,當取小于1的值就會拋異常

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99视频在线观看视频一区 | 久久91精品久久91综合 | 日日噜噜爽爽狠狠视频 | 欧美日韩网址 | 国产一区二区三区精品久久呦 | 国产精品资源 | 亚洲午夜久久久精品影院视色 | 亚洲国产综合自在线另类 | 亚洲日本va中文字幕在线不卡 | 亚洲国产aaa毛片无费看 | 农村女人十八毛片a级毛片 农村三级孕妇视频在线 | 日本中文字幕高清 | 亚洲在线观看一区 | 亚洲日韩欧美综合 | 欧美日韩专区 | 51国产福利视频在线观看 | 中文国产成人久久精品小说 | 国产香蕉精品视频 | 日本久久综合视频 | 日韩视频网 | 91精品啪国产在线观看免费牛牛 | 亚洲天堂一区 | 亚洲国产精品看片在线观看 | 性欧美高清久久久久久久 | 麻豆a | 99秒拍福利大尺度视频 | 麻豆一区二区三区在线观看 | 黄频免费观看 | 精品小视频在线观看 | 亚洲欧美香蕉在线日韩精选 | 色综合精品久久久久久久 | 91亚洲国产三上悠亚在线播放 | 亚州精品一区二区三区 | 国产色婷婷 | 卡通动漫亚洲综合 | 黄色成人影院 | 国产精品视频久久久久 | 射久久| 91一区二区三区四区五区 | 国产成人毛片精品不卡在线 | 国产日韩欧美精品一区 |