国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 一行代碼干掉 Debug 和 Print,助力算法學習

一行代碼干掉 Debug 和 Print,助力算法學習

2021-12-29 23:28Python技術派森醬 Python

本文介紹了怎么使用 pysnooper 工具,pysnooper 不僅可以少一些 debug 和 print,更能幫助理解算法題。

一行代碼干掉 Debug 和 Print,助力算法學習

在寫算法的時候,總是要每行每個變量一個個的 debug,有時候還要多寫幾個 print,一道算法題要花好長時間才能理解。pysnooper 模塊可以把在運行中變量值都給打印出來。

模塊安裝

  1. pip3 install pysnooper

簡單例子

下面是道簡單的力扣算法題作為一個簡單的例子

  1. import pysnooper
  2. @pysnooper.snoop()
  3. def longestCommonPrefix(strs):
  4. res = ''
  5. for i in zip(*strs):
  6. print(i)
  7. if len(set(i)) == 1:
  8. res += i[0]
  9. else
  10. break
  11. return res
  12. if __name__ == 'main':
  13. longestCommonPrefix(["flower","flow","flight"])

結果:

  1. 3:38:25.863579 call 4 def longestCommonPrefix(strs):
  2. 23:38:25.864474 line 5 res = ''
  3. New var:....... res = ''
  4. 23:38:25.864474 line 6 for i in zip(*strs):
  5. New var:....... i = ('f', 'f', 'f')
  6. 23:38:25.865479 line 7 print(i)
  7. ('f', 'f', 'f')
  8. 23:38:25.866471 line 8 if len(set(i))==1:
  9. 23:38:25.866471 line 9 res+=i[0]
  10. Modified var:.. res = 'f'
  11. 23:38:25.866471 line 6 for i in zip(*strs):
  12. Modified var:.. i = ('l', 'l', 'l')
  13. 23:38:25.866471 line 7 print(i)
  14. ('l', 'l', 'l')
  15. 23:38:25.867468 line 8 if len(set(i))==1:
  16. 23:38:25.867468 line 9 res+=i[0]
  17. Modified var:.. res = 'fl'
  18. 23:38:25.868476 line 6 for i in zip(*strs):
  19. Modified var:.. i = ('o', 'o', 'i')
  20. 23:38:25.868476 line 7 print(i)
  21. ('o', 'o', 'i')
  22. 23:38:25.869463 line 8 if len(set(i))==1:
  23. 23:38:25.869463 line 11 break
  24. 23:38:25.869463 line 12 return res
  25. 23:38:25.869463 return 12 return res
  26. Return value:.. 'fl'
  27. Elapsed time: 00:00:00.008201

我們可以看到 pysnooper 把整個執行程序都記錄了下來,其中包括行號, 行內容,變量的結果等情況,我們很容易的就看懂了這個算法的真實情況。并且不需要再使用 debug 和 print 調試代碼。很是省時省力,只需要在方法上面加一行 @pysnooper.snoop()。

復雜使用

pysnooper 包含了多個參數,一起來看看吧

output

output 默認輸出到控制臺,設置后輸出到文件,在服務器中運行的時候,特定的時間出現代碼問題就很容易定位錯誤了,不然容易抓瞎。小編在實際中已經被這種問題困擾了好幾次,每次都掉好多頭發。

  1. @pysnooper.snoop('D:\pysnooper.log')
  2. def longestCommonPrefix(strs):

示例結果:

一行代碼干掉 Debug 和 Print,助力算法學習

watch 和 watch_explode

watch 用來設置跟蹤的非局部變量,watch_explode 表示設置的變量都不監控,只監控沒設置的變量,正好和 watch 相反。

  1. index = 1
  2. @pysnooper.snoop(watch=('index'))
  3. def longestCommonPrefix(strs):

示例結果

沒有加 watch 參數

  1. Starting var:.. strs = ['flower', 'flow', 'flight']
  2. 00:12:33.715367 call 5 def longestCommonPrefix(strs):
  3. 00:12:33.717324 line 7 res = ''
  4. New var:....... res = ''

加了watch 參數,就會有一個 Starting var:.. index

  1. Starting var:.. strs = ['flower', 'flow', 'flight']
  2. Starting var:.. index = 1
  3. 00:10:35.151036 call 5 def longestCommonPrefix(strs):
  4. 00:10:35.151288 line 7 res = ''
  5. New var:....... res = ''

depth

depth 監控函數的深度

  1. @pysnooper.snoop(depth=2)
  2. def longestCommonPrefix(strs):
  3. otherMethod()

示例結果

  1. Starting var:.. strs = ['flower', 'flow', 'flight']
  2. 00:20:54.059803 call 5 def longestCommonPrefix(strs):
  3. 00:20:54.059803 line 6 otherMethod()
  4. 00:20:54.060785 call 16 def otherMethod():
  5. 00:20:54.060785 line 17 x = 1
  6. New var:....... x = 1
  7. 00:20:54.060785 line 18 x = x + 1
  8. Modified var:.. x = 2
  9. 00:20:54.060785 return 18 x = x + 1
  10. Return value:.. None
  11. 00:20:54.061782 line 7 res = ''

監控的結果顯示,當監控到調用的函數的時候,記錄上會加上縮進,并將它的局部變量和返回值打印處理。

prefix

prefix 輸出內容的前綴

  1. @pysnooper.snoop(prefix='-------------')
  2. def longestCommonPrefix(strs):

示例結果

  1. -------------Starting var:.. strs = ['flower', 'flow', 'flight']
  2. -------------00:39:13.986741 call 5 def longestCommonPrefix(strs):
  3. -------------00:39:13.987218 line 6 res = ''

relative_time

relative_time 代碼運行的時間

  1. @pysnooper.snoop(relative_time=True)
  2. def longestCommonPrefix(strs):

示例結果

  1. Starting var:.. strs = ['flower', 'flow', 'flight']
  2. 00:00:00.000000 call 5 def longestCommonPrefix(strs):
  3. 00:00:00.001998 line 6 res = ''
  4. New var:....... res = ''
  5. 00:00:00.001998 line 7 for i in zip(*strs):

max_variable_length

max_variable_length 輸出的變量和異常的最大長度,默認是 100 個字符,超過 100 個字符就會被截斷,可以設置為 max_variable_length=None 不截斷輸出

  1. @pysnooper.snoop(max_variable_length=5)
  2. def longestCommonPrefix(strs):

示例結果

  1. Starting var:.. strs = [...]
  2. 00:56:44.343639 call 5 def longestCommonPrefix(strs):
  3. 00:56:44.344696 line 6 res = ''
  4. New var:....... res = ''
  5. 00:56:44.344696 line 7 for i in zip(*strs):
  6. New var:....... i = (...)

總結

本文介紹了怎么使用 pysnooper 工具,pysnooper 不僅可以少一些 debug 和 print,更能幫助理解算法題。

原文鏈接:https://mp.weixin.qq.com/s/rTuxElffIw24GQj_-lAdcw

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品久久久久久久久久东京 | 中文字幕在线免费视频 | 欧美日韩高清在线观看 | 久久久久久免费精品 | 国产精品不卡一区二区三区 | 91中文字幕在线观看 | 99re视频在线观看 | 日本一区二区三区免费观看 | 亚洲精品资源在线观看 | 日韩免费一区 | 96自拍视频 | 欧美精品v国产精品v日韩精品 | 久久久国产精品入口麻豆 | 成人黄网视频在线观看 | 欧美日韩中文 | 国产成人av网站 | 久久国产精品久久 | 国产99久久精品 | 91人人爽人人爽人人精88v | 日韩一区电影 | 国产精品一区二区三区免费 | 精品久久国产老人久久综合 | 久久久国产一区二区三区四区小说 | 午夜激情视频在线 | 激情久久网 | 国产中文一区二区三区 | 国产一级特黄 | 日夜夜精品视频 | 一区二区在线看 | 国产高清美女一级a毛片久久 | 在线观看成人国产 | 国产精品日韩一区 | 欧美一区二区免费在线 | 成年人视频在线观看免费 | 一级黄色大片 | 蜜桃视频成人在线观看 | 亚洲成人久久久 | 国产狂做受xxxxx高潮 | 精品久| 人人澡人人射 | 国产 欧美 日产久久 |