<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          PySnooperPython 自動(dòng) Debug 工具

          聯(lián)合創(chuàng)作 · 2023-10-01 12:01

          PySnooper 在 GitHub 上自嘲是一個(gè)“乞丐版”調(diào)試工具(poor man's debugger)。

          一般情況下,在編寫 Python 代碼時(shí),如果想弄清楚為什么 Python 代碼沒有按照預(yù)期執(zhí)行、哪些代碼在運(yùn)行哪些沒在運(yùn)行、局部變量又是什么,我們會(huì)使用包含斷點(diǎn)和觀察模式等功能的調(diào)試器,或者直接使用 print 語(yǔ)句打印出來。

          但上面的方法都比較麻煩,例如使用調(diào)試器需要進(jìn)行繁瑣的設(shè)置,使用 print 打印也要很仔細(xì)。與它們相比,使用 PySnooper 只需為要調(diào)試的函數(shù)添加一個(gè)裝飾器即可,這樣就能獲得運(yùn)行函數(shù)詳細(xì)的 log,包括執(zhí)行的代碼行和執(zhí)行時(shí)間,以及局部變量發(fā)生變化的確切時(shí)間。

          之所以稱為“乞丐版”,相信是因?yàn)?PySnooper 使用起來十分簡(jiǎn)單,開發(fā)者可以在任何龐大的代碼庫(kù)中使用它,而無(wú)需進(jìn)行任何設(shè)置。只需添加裝飾器,并為日志輸出地址指定路徑。

          示例

          下面的代碼寫了一個(gè)函數(shù)將傳入的值轉(zhuǎn)換為二進(jìn)制碼,并返回一個(gè)二進(jìn)制列表。要使用 PySnooper,只需為函數(shù)添加 @pysnooper.snoop()裝飾器即可:

          import pysnooper
          
          @pysnooper.snoop()
          def number_to_bits(number):
              if number:
                  bits = []
                  while number:
                      number, remainder = divmod(number, 2)
                      bits.insert(0, remainder)
                  return bits
              else:
                  return [0]
          
          number_to_bits(6)

          輸出如下

          Starting var:.. number = 6
          21:14:32.099769 call         3 @pysnooper.snoop()
          21:14:32.099769 line         5     if number:
          21:14:32.099769 line         6         bits = []
          New var:....... bits = []
          21:14:32.099769 line         7         while number:
          21:14:32.099769 line         8             number, remainder = divmod(number, 2)
          New var:....... remainder = 0
          Modified var:.. number = 3
          21:14:32.099769 line         9             bits.insert(0, remainder)
          Modified var:.. bits = [0]
          21:14:32.099769 line         7         while number:
          21:14:32.099769 line         8             number, remainder = divmod(number, 2)
          Modified var:.. number = 1
          Modified var:.. remainder = 1
          21:14:32.099769 line         9             bits.insert(0, remainder)
          Modified var:.. bits = [1, 0]
          21:14:32.099769 line         7         while number:
          21:14:32.099769 line         8             number, remainder = divmod(number, 2)
          Modified var:.. number = 0
          21:14:32.099769 line         9             bits.insert(0, remainder)
          Modified var:.. bits = [1, 1, 0]
          21:14:32.099769 line         7         while number:
          21:14:32.099769 line        10         return bits
          21:14:32.099769 return      10         return bits

          安裝

          使用 pip 進(jìn)行安裝

          pip install pysnooper
          瀏覽 17
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一级特色特黄视频 | 男人天堂五月天 | 婷婷五月天丁香 | 国产国产国产在线无码视频 | 国产一级黄色毛片 |