Python 相關學習

2021-09-05 23:21:28 字數 4496 閱讀 1427

集合    

正則python debug(**

文討論在沒有方便的ide工具可用的情況下,使用pdb除錯python程式

原始碼例子

例如,有模擬稅收計算的程式:

#!/usr/bin/python

def debug_demo(val):

if val <= 1600 :

print "level 1"

print 0

elif val <= 3500 :

print "level 2"

print (val - 1600) * 0.05

elif val <= 6500 :

print "level 3"

print (val - 3500) * 0.10 + (3500-1600) * 0.05

else:

print "level 4"

print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05

#~def debug_demo                

if __name__ == "__main__":

debug_demo(4500)

debug_demo函式計算4500的入賬所需的稅收。

如何除錯?

1.加入斷點

在需要插入斷點的地方,加入紅色部分**:如果_debug值為true,則在該處開始除錯(加入_debug的原因是為了方便開啟/關閉除錯)。

#!/usr/bin/python

_debug=true

def debug_demo(val):

if _debug == true:

import pdb

pdb.set_trace()

if val <= 1600 :

print "level 1"

print 0

elif val <= 3500 :

print "level 2"

print (val - 1600) * 0.05

elif val <= 6500 :

print "level 3"

print (val - 3500) * 0.10 + (3500-1600) * 0.05

else:

print "level 4"

print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05

#~def debug_demo                

if __name__ == "__main__":

debug_demo(4500)

2.開始執行除錯

執行程式./debug_demo.py,得到

> /usr/local/qspace/user_network/debug_demo.py(7)debug_demo()

-> if val <= 1600 :

(pdb)

-> val <= 1600 : 指示當前執行的語句,(pdb)等待你的除錯指令. pdb的指令很豐富,輸入h指令可以檢視指令的使用方法。下面簡單介紹常用指令:

檢視**上下文,l(小寫l)

(pdb) l

2         _debug=true

3         def debug_demo(val):

4                         if _debug == true:

5                                         import pdb

6                                         pdb.set_trace()

7    

->                 if val <= 1600 :

8                                         print "level 1"

9                                         print 0

10                         elif val <= 3500 :

11                                         print "level 2"

12                                         print (val - 1600) * 0.05

(pdb)    

左邊是行號,右邊是**正文。

監視變數:p 變數名

(pdb) p val

4500

(pdb)    

單步執行: n

-> elif val <= 3500 :

(pdb) l

5                                         import pdb

6                                         pdb.set_trace()

7                         if val <= 1600 :

8                                         print "level 1"

9                                         print 0

10    ->                 elif val <= 3500 :

11                                         print "level 2"

12                                         print (val - 1600) * 0.05

13                         elif val <= 6500 :

14                                         print "level 3"

15                                         print (val - 3500) * 0.10 + (3500-1600) * 0.05

加入斷點:b 行號

(pdb) b 14

執行到斷點: c

(pdb) c

> /*****

-> print "level 3"

(pdb) l

9                                         print 0

10                         elif val <= 3500 :

11                                         print "level 2"

12                                         print (val - 1600) * 0.05

13                         elif val <= 6500 :

14 b->                                 print "level 3"

15                                         print (val - 3500) * 0.10 + (3500-1600) * 0.05

16                         else:

17                                         print "level 4"

18                                         print (val - 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05

19    

執行到函式返回前: r

(pdb) r

level 3

195.0

--return--

> /****()

->none

-> print (val - 3500) * 0.10 + (3500-1600) * 0.05

(pdb)    

說明:

pdb還有很多其他很多有用的指令,讀者可以自行探索。輸入h,h 命令。就可以得到命令的詳細幫助。

不過,我個人認為一般無需啟動這種除錯方法,一般使用日誌輸出進行除錯即可,除非遇到了非常微妙的錯誤。這時,單步除錯的威力便顯示出來了。

本文出自 51cto.com技術部落格

python訊號學習相關

以下是工作中用python來處理excel檔案裡的訊號學習內容的 由於 可讀性很差,不建議作為excel通用處理類的參考 from collections import namedtuple import xlrd import xlwt from xlwt.compat import basest...

Python學習相關資料

python開發者門戶 webserver伺服器 tornado python和tornado介紹 tornado原始碼分析之http伺服器篇 多指令碼語言模板引擎資訊 python python實現 直譯器 執行python指令碼的命令程式 python包管理工具 pip 在mac下安裝pip 官...

Python學習又數字相關

int x base 將x轉換為乙個整數 long x base 將x轉換為乙個長整數 float x 將x轉換到乙個浮點數 complex real imag 建立乙個複數 str x 將物件 x 轉換為字串 repr x 將物件 x 轉換為表示式字串 eval str 用來計算在字串中的有效py...