<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      翻譯:《實用的Python編程》08_03_Debugging

      目錄 | 上一節 (8.2 日志) | 下一節 (9 包)

      8.3 調試

      調試建議

      假設程序崩潰了:

      bash % python3 blah.py
      Traceback (most recent call last):
        File "blah.py", line 13, in ?
          foo()
        File "blah.py", line 10, in foo
          bar()
        File "blah.py", line 7, in bar
          spam()
        File "blah.py", 4, in spam
          line x.append(3)
      AttributeError: 'int' object has no attribute 'append'
      

      那么現在該怎么辦呢?

      閱讀回溯信息

      最后一行是程序崩潰的具體原因:

      bash % python3 blah.py
      Traceback (most recent call last):
        File "blah.py", line 13, in ?
          foo()
        File "blah.py", line 10, in foo
          bar()
        File "blah.py", line 7, in bar
          spam()
        File "blah.py", 4, in spam
          line x.append(3)
      # Cause of the crash
      AttributeError: 'int' object has no attribute 'append'
      

      不過,回溯信息并不總是那么易于閱讀或理解。

      專業建議:將整個回溯粘貼到谷歌。

      使用交互式解釋器(REPL)

      執行腳本的 時候,可以使用選項 -i 使 Python 保持存活(keep alive)。

      bash % python3 -i blah.py
      Traceback (most recent call last):
        File "blah.py", line 13, in ?
          foo()
        File "blah.py", line 10, in foo
          bar()
        File "blah.py", line 7, in bar
          spam()
        File "blah.py", 4, in spam
          line x.append(3)
      AttributeError: 'int' object has no attribute 'append'
      >>>
      

      選項 -i 可以保留解釋器狀態。這意味著可以在程序崩潰后查找錯誤信息。對變量的值和其它狀態進行檢查。

      使用打印進行調試

      使用 print() 函數進行調試非常常見。

      建議:確保使用的是 repr() 函數。

      def spam(x):
          print('DEBUG:', repr(x))
          ...
      

      repr() 函數顯示一個值的準確表示,而不是格式良好的輸出。

      >>> from decimal import Decimal
      >>> x = Decimal('3.4')
      # NO `repr`
      >>> print(x)
      3.4
      # WITH `repr`
      >>> print(repr(x))
      Decimal('3.4')
      >>>
      

      Python 的調試器

      可以在程序內手動啟動調試器(debugger)。

      def some_function():
          ...
          breakpoint()      # Enter the debugger (Python 3.7+)
          ...
      

      上述操作會在 breakpoint() 調用時啟動調試器。

      在 Python 的早期版本中,可能會看到下面這樣的調試指南:

      import pdb
      ...
      pdb.set_trace()       # Instead of `breakpoint()`
      ...
      

      (譯注:Python 3.7 之后,可以使用內置函數 breakpoint() 代替 import pdb; pdb.set_trace()

      在調試解釋器下運行程序

      也可以在調試器下運行整個程序:

      bash % python3 -m pdb someprogram.py
      

      上述操作會在第一行語句之前自動進入調試器,允許設置斷點和修改配置。

      常見的調試器命令:

      (Pdb) help            # Get help
      (Pdb) w(here)         # Print stack trace
      (Pdb) d(own)          # Move down one stack level
      (Pdb) u(p)            # Move up one stack level
      (Pdb) b(reak) loc     # Set a breakpoint
      (Pdb) s(tep)          # Execute one instruction
      (Pdb) c(ontinue)      # Continue execution
      (Pdb) l(ist)          # List source code
      (Pdb) a(rgs)          # Print args of current function
      (Pdb) !statement      # Execute statement
      

      斷點的位置可以用下列任意一種方式進行表示:

      (Pdb) b 45            # Line 45 in current file
      (Pdb) b file.py:45    # Line 34 in file.py
      (Pdb) b foo           # Function foo() in current file
      (Pdb) b module.foo    # Function foo() in a module
      

      練習

      練習 8.4:Bugs? 什么是 Bugs?

      有 bug,我們就解決 bug(It runs. Ship it!)。

      目錄 | 上一節 (8.2 日志) | 下一節 (9 包)

      注:完整翻譯見 https://github.com/codists/practical-python-zh

      posted @ 2021-04-11 20:28  codists  閱讀(315)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中文字幕乱妇无码AV在线| 97无码人妻福利免费公开在线视频| 狠狠v日韩v欧美v| 99久久精品国产一区色| 红杏av在线dvd综合| 2021国产成人精品久久| 最新午夜男女福利片视频| 国产AV无码专区亚洲AV漫画| 南汇区| 亚洲综合av永久无码精品一区二区| 日韩国产精品中文字幕| 性色高清xxxxx厕所偷窥| 亚洲女同性同志熟女| 无码人妻精品一区二区三区下载| 在线涩涩免费观看国产精品| 综合在线 亚洲 成人 欧美| 亚洲理论电影在线观看| 亚洲免费观看在线视频| 色综合五月伊人六月丁香| 疯狂做受XXXX高潮国产| 四虎影院176| 亚洲狠狠婷婷综合久久久| 国产精品一区二区三区污| 丰满人妻跪趴高撅肥臀| 色一情一乱一伦麻豆| 99热久久这里只有精品| 一本大道久久东京热AV| 涡阳县| 国产精品国产精品偷麻豆| 国厂精品114福利电影免费| 嵩明县| 欧美日本在线一区二区三区| 国产二区三区不卡免费| 陵水| 狠狠躁夜夜躁无码中文字幕| 国产亚洲精品成人aa片新蒲金| 高清中文字幕一区二区| 伊人av超碰伊人久久久| www射我里面在线观看| 亚洲AV日韩精品久久久久| 亚洲国产色一区二区三区|