欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python調試神器PySnooper的使用

系統 1847 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條評論
主站蜘蛛池模板: 天堂一区二区三区四区 | 欧美激情综合亚洲五月蜜桃 | 亚洲精品久久久蜜桃 | 日本精品一二区 | 天天色av| 久久天堂 | 黑色丝袜美女自安慰视频 | 一a一级片 | 欧美高清国产 | 日本黄大片影院一区二区 | 国产拳头交一区二区 | wwwwww日本 | 欧美zozozo人禽交免费观看 | 老牛影视av一区二区在线观看 | 欧美两性人xxxx高清免费 | 三级免费黄色片 | 在线免费国产 | 色拍拍在精品视频69影院在线 | 精品视频在线观看视频免费视频 | 国产四虎精品8848hh | 欧美一级电影在线播放 | 久久久久性视频 | 亚洲国产精品一区二区久久 | 欧美日韩一二区 | av激情影院| 亚洲国产天堂久久综合9999 | 伦理午夜电影免费观看 | 成人免费网站在线观看 | 大香萑75久久精品免费 | 一级色毛片| 欧美最猛性xxxxx亚洲精品 | 欧美视频二区 | 久久精品二区亚洲w码 | 美女露尿口视频 | 妞干网免费在线观看 | jizzyouxxxx| 水中色av综合 | 久久国产精品99久久小说 | 99在线精品视频在线观看 | 亚洲精品久久久久久国产精华液 | 久草久草久草久草 |