1. 程式人生 > >Python學習筆記__8.2章 調試

Python學習筆記__8.2章 調試

編程語言 Python

# 這是學習廖雪峰老師python教程的學習筆記

1、概覽

如何在程序出錯時,知道哪些變量的值是正確的,哪些變量的值是錯誤的。

1.1、print()

用print()把可能有問題的變量打印出來

def foo(s):

n = int(s)

print('>>> n = %d' % n)

return 10 / n

1.2、斷言

凡是用print()來輔助查看的地方,都可以用斷言(assert)來替代:

def foo(s):

n = int(s)

assert n != 0, 'n is zero!' # n!=0,才能繼續向後執行。

n=0,就會輸出‘n is zero

return 10 / n

如果斷言失敗,assert語句本身就會拋出AssertionError。

為了執行程序的美觀,啟動Python解釋器時可以用-O參數來關閉assert

$ python -O err.py

1.3logging

把print()替換為logging是第3種方式,和assert比,logging不會拋出錯誤,而且可以輸出到文件

import logging

# 指定記錄信息的級別,有debug,info,warning,error等幾個級別。

# 後面的級別,會使前面的級別失效。如info會使debug失效

logging.basicConfig(level=logging.INFO)

s = '0'

n = int(s)

logging.info('n = %d' % n)

print(10 / n)

1.4、pdb

啟動Python的調試器pdb,讓程序以單步方式運行,可以隨時查看運行狀態

$ python -m pdb err.py

> /Users/michael/Github/learn-python3/samples/debug/err.py(2)<module>()

-> s = '0' #自動將第一行打印出來

(Pdb) # 變為等待輸入指令的調試模式

常用指令有:

1:查看代碼

n:單步執行

p:接變量名,查看變量

q:退出

1.5、pdb.set_trace()

這個方法也是用pdb,但是不需要單步執行。我們需要import pdb,然後,在可能出錯的地方放一個pdb.set_trace(),就可以設置一個斷點。

# err.py

import pdb

s = '0'

n = int(s)

pdb.set_trace() # 運行到這裏會自動暫停

print(10 / n)

暫停後,會進入Pdb調試模式。p 查看變量,c 繼續運行

1.6、IDE(集成環境)

目前比較好的Python IDE有:

  • Visual Studio Code:https://code.visualstudio.com/,需要安裝Python插件。

  • PyCharm:http://www.jetbrains.com/pycharm/

2、擴展文檔

python logging模塊 (http://www.cnblogs.com/dahu-daqing/p/7040764.html)


Python學習筆記__8.2章 調試