您好,登錄后才能下訂單哦!
PySnooper如何在python中使用?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
首先直接可以使用 pip 安裝:pip install pysnooper使用時,只需要在每個函數前面添加裝飾器即可。
給個簡單例子看看就知道了,
import pysnooper @pysnooper.snoop() def removeDuplicates(nums): """ :type nums: List[int] :rtype: int """ flag = 0 i=1 while i<len(nums): if nums[i]==nums[i-1]: flag+=1 i+=1 if flag>=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<len(nums):
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<len(nums):
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<len(nums):
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<len(nums):
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的值就會拋異常
看完上述內容,你們掌握PySnooper如何在python中使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。