成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

python學(xué)習(xí)筆記-python的調(diào)試

hufeng / 2514人閱讀

摘要:但是在調(diào)試之后,我們還需要手動(dòng)刪除語(yǔ)句,比較麻煩。關(guān)閉后,語(yǔ)句就不再生效。的好處有很多,一個(gè)是可以制定輸出特定級(jí)別的信息。我們可以用對(duì)進(jìn)行簡(jiǎn)單的配置。小于該的都會(huì)被忽略。但是在處理很長(zhǎng)的代碼的時(shí)候,顯得效率低下。

我們?cè)趯懘a的時(shí)候,往往會(huì)有一大堆錯(cuò)誤。我們?cè)撊绾握{(diào)試呢?

用print語(yǔ)句打印

我們可以用print語(yǔ)句打印我們想要的內(nèi)容,然后在輸出中查看。

print "hah"

但是在調(diào)試之后,我們還需要手動(dòng)刪除print語(yǔ)句,比較麻煩。

assert

前面用print的地方,我們可以使用assert語(yǔ)句來(lái)替代。
例如:

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

foo("0")

assert語(yǔ)句后緊跟著一句判斷語(yǔ)句,再更著錯(cuò)誤信息。
如果判斷語(yǔ)句不符合,則拋出一個(gè)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

我們可以在執(zhí)行的時(shí)候帶上參數(shù)-o統(tǒng)一關(guān)閉assert。關(guān)閉后,assert語(yǔ)句就不再生效。

logging

可以將print語(yǔ)句替換成logging。logging不會(huì)像assert那樣拋出錯(cuò)誤信息。
logging的好處有很多,一個(gè)是可以制定輸出特定級(jí)別的信息。

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)

對(duì)logging進(jìn)行簡(jiǎn)單的配置。小于該level的warning都會(huì)被忽略。
另外我們也可以對(duì)logging輸出的位置進(jìn)行配置,例如是輸出到console還是到某一個(gè)debug文件。
關(guān)于更多l(xiāng)ogging的配置,可以閱讀:https://segmentfault.com/a/11...。

調(diào)試器 pdb,the python debugger

pdb的啟動(dòng)方式為

python -m pdb test.py

pdb常用的命令

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

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

pdb.set_trace()

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

pdb.set_trace()

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

當(dāng)然,很多現(xiàn)代化的IDE比如Pycharm等都提供了很多方便的可視化的debug工具,可以很方便的上手。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/38324.html

相關(guān)文章

  • ApacheCN 人工智能知識(shí)樹 v1.0

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

    劉厚水 評(píng)論0 收藏0
  • 五位專家跟你講講為啥Python更適合做AI/機(jī)器學(xué)習(xí)

    摘要:研究人員和機(jī)器學(xué)習(xí)的作者對(duì)于數(shù)學(xué)和面向數(shù)據(jù)的人來(lái)說,非常容易使用。這對(duì)于機(jī)器學(xué)習(xí)和領(lǐng)域的工作是非常重要的。高級(jí)腳本語(yǔ)言非常適合人工智能和機(jī)器學(xué)習(xí),因?yàn)槲覀兛梢钥焖僖苿?dòng)并重試。 摘要: 為什么Python會(huì)在這股深度學(xué)習(xí)浪潮中成為編程語(yǔ)言的頭牌?聽聽大牛如何解釋吧! showImg(https://segmentfault.com/img/bV59KD?w=780&h=405); 1.P...

    劉德剛 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<