国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python學習筆記-python的調試

hufeng / 2455人閱讀

摘要:但是在調試之后,我們還需要手動刪除語句,比較麻煩。關閉后,語句就不再生效。的好處有很多,一個是可以制定輸出特定級別的信息。我們可以用對進行簡單的配置。小于該的都會被忽略。但是在處理很長的代碼的時候,顯得效率低下。

我們在寫代碼的時候,往往會有一大堆錯誤。我們該如何調試呢?

用print語句打印

我們可以用print語句打印我們想要的內容,然后在輸出中查看。

print "hah"

但是在調試之后,我們還需要手動刪除print語句,比較麻煩。

assert

前面用print的地方,我們可以使用assert語句來替代。
例如:

def foo(s):
    s = int(s)
    assert s != 0, "s is Zero"
    return 10.0 / s

foo("0")

assert語句后緊跟著一句判斷語句,再更著錯誤信息。
如果判斷語句不符合,則拋出一個AssertionError.例如:

Traceback (most recent call last):
  File "/Users/W/Code/Python/Demo/AssertDemo.py", line 7, in 
    foo("0")
  File "/Users/W/Code/Python/Demo/AssertDemo.py", line 3, in foo
    assert s != 0, "s is Zero"
AssertionError: s is Zero

我們可以在執行的時候帶上參數-o統一關閉assert。關閉后,assert語句就不再生效。

logging

可以將print語句替換成logging。logging不會像assert那樣拋出錯誤信息。
logging的好處有很多,一個是可以制定輸出特定級別的信息。

Level:  CRITICAL Numeric value: 50 
Level:  ERROR     Numeric value: 40
Level:  WARNING Numeric value: 30 
Level:  INFO          Numeric value: 20
Level:  DEBUG      Numeric value: 10
Level:  NOTSET    Numeric value: 0

我們可以用

logging.basicConfig(level=logging.DEBUG)

對logging進行簡單的配置。小于該level的warning都會被忽略。
另外我們也可以對logging輸出的位置進行配置,例如是輸出到console還是到某一個debug文件。
關于更多logging的配置,可以閱讀:https://segmentfault.com/a/11...。

調試器 pdb,the python debugger

pdb的啟動方式為

python -m pdb test.py

pdb常用的命令

n: 即next,用于執行下一步
l: 應該是list,查看下面要執行的代碼
p 變量名: p應該是parameter的首字母,查看某一個變量的值
q: quit, 退出程序

pdb可以控制python的一步一步執行,理論上是萬能的debugger。但是在處理很長的代碼的時候,顯得效率低下。
分析一下我們的需求,我們其實是需要在一些關鍵的點設置一下斷點,讓我們看一下執行的結果即可,而不是像前面那樣查看每一步。
接下來我們就來看一下pdb.set_trace().

pdb.set_trace()

我們只需要在讓程序暫停的地方寫一行代碼:

pdb.set_trace()

Python編輯器在遇到pdb.set_trace()時候,程序就會暫停,我們就可以用上面提到的pdb命令來查看各個參數的值了。

當然,很多現代化的IDE比如Pycharm等都提供了很多方便的可視化的debug工具,可以很方便的上手。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38324.html

相關文章

  • ApacheCN 人工智能知識樹 v1.0

    摘要:貢獻者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節拆開,再按照知識點合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻者:飛龍版...

    劉厚水 評論0 收藏0
  • 五位專家跟你講講為啥Python更適合做AI/機器學習

    摘要:研究人員和機器學習的作者對于數學和面向數據的人來說,非常容易使用。這對于機器學習和領域的工作是非常重要的。高級腳本語言非常適合人工智能和機器學習,因為我們可以快速移動并重試。 摘要: 為什么Python會在這股深度學習浪潮中成為編程語言的頭牌?聽聽大牛如何解釋吧! showImg(https://segmentfault.com/img/bV59KD?w=780&h=405); 1.P...

    劉德剛 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<