breakpoint()是Python3.7中新引入的一個內置函數,其主要作用是在開發Python程序時,在使用breakpoint()函數的地方進入程序調試器,以便跟蹤觀察程序的運行情況。
調試Python程序是一件令人頭疼的事情,在使用Python 3.7之前,開發者為調試程序不得不首先引入pdb包,然后調用pdb.set_trace()函數來跟蹤調試程序。但如果你準備使用其它調試器,如web-pdb,你就不得不把與PDB模塊有關的代碼移除掉,然后添加web_pdb.set_trace()方法。這使得為調試Python程序,不得不花費更大的精力和開銷,使得Python程序難以維護和調試。
Python3.7引入的breakpoint()方法可以使我們編寫松耦合調試代碼。該函數自動調用sys.breakpointhook()函數,直接傳遞相關參數。默認情況下,sys.breakpointhook()函數內部調用pdb.set_trace()方法而不需要參數。這種情況下下,該函數自動引入pdb包,而無需用戶顯示的引入pdb包。但用戶可以將sys.breakpointhook()設置為其它函數,breakpoint()函數將自動調用用戶設置的函數,而進入用戶所選擇的調試器。
breakpoint(*args, **kws)
參數
*args:位置參數,不定長參數
**kws:關鍵字參數,不定長參數。
該函數將在當前位置進入到程序到程序調試器,而無需返回值。
該函數參數使用錯誤可能會引發TypeError錯誤。
下面例子展示 breakpoint()函數使用方法。
lst = []
for i in range(10):
lst.append(i)
if i == 5:
#開始跟蹤調試
breakpoint()
print(lst)
上面的例子演示的是向列表lst中追加數據。當循環計數i為5時,執行breakpoint()函數進入到調試器中。
整個調試過程如下圖所示:
進入pdb調試過程后,首先鍵入 'p lst',將lst的當前值輸出來,命令符'p'的作用是輸出某個對象(如變量lst)的值。然后鍵入命令'n'然后回車進入到下一個代碼執行中。命令符'c'的作用是繼續執行程序直到遇到下一個breakpoint()。
因為該程序只有當i == 5時才會遇到breakpoint(),所以鍵入'c'后程序直接執行到最后,并輸出了lst中的全部元素。
這篇文章介紹了breakpoint()函數的使用方法。如果在編寫程序中遇到無法觀察到的問題時,在可能出現問題的地方使用breakpoint()函數,使程序運行時進入到pdb程序調試模塊以跟蹤程序的執行情況。關于Python的調試問題,本站將在今后的文章中繼續給予詳細的介紹。
新聞熱點
疑難解答