Python 調試方法

Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麪向對象的腳本語言。

Python 調試方法Python 調試方法

一、printhtml

print('here')
# 能夠發現某段邏輯是否執行
# 打印出變量的內容
最簡單 print()
只是影響代碼美觀,並且須要在後面刪掉,比較麻煩python

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


def main():
foo('0')# err.py
def foo(s):
n = int(s)
assert n != 0, 'n is zero!'
return 10 / n

二、assert工具

assert false, 'blabla'
# 若是條件不成立,則打印出 'blabla' 並拋出AssertionError異常
assert 語句的做用是:當條件表達式的值爲真時,該語句什麼也不作,程序正常運行;反之,若條件表達式的值爲假,則 assert 會拋出 AssertionError 異常。其中,[,描述信息] 做爲可選參數,用於對條件表達式可能產生的異常進行描述。debug

例如:
  1. s_age = input("請輸入您的年齡:")
  2. age = int(s_age)
  3. assert 20 < age < 80 , "年齡不在 20-80 之間"
  4. print("您輸入的年齡在20和80之間")

程序運行結果爲:
請輸入您的年齡:10調試

Traceback (most recent call last):
  File "C:\Users\mengma\Desktop\1.py", line 3, in 
    assert 20 < age < 80 , "年齡不在 20-80 之間"
AssertionError: 年齡不在 20-80 之間

經過運行結果能夠看出,當 assert 中條件表達式的值爲假時,程序將拋出異常,並附帶異常的描述性信息,與此同時,程序當即中止執行。code

一般狀況下,assert 能夠和 try except 異常處理語句配合使用,之前面代碼爲例:htm

try:
    s_age = input("請輸入您的年齡:")
    age = int(s_age)
    assert 20 < age < 80 , "年齡不在 20-80 之間"
    print("您輸入的年齡在20和80之間")
except AssertionError as e:
    print("輸入年齡不正確",e)

程序運行結果爲:對象

請輸入您的年齡:10
輸入年齡不正確 年齡不在 20-80 之間

經過在程序的適當位置,使用 assert 語句判斷變量或表達式的值,能夠起到調試代碼的做用。
當在命令行模式運行 Python 程序時,傳入 -O(注意是大寫)參數,能夠禁用程序中包含的 assert 語句。blog

三、debugger

能夠經過 pdb、IDE 等工具進行調試。

調試的具體方法這裏不展開。

Python 中有兩個內置方法在這裏也頗有幫助:

locals: 執行 locals() 以後, 返回一個字典, 包含(current scope)當前範圍下的局部變量。
globals: 執行 globals() 以後, 返回一個字典, 包含(current scope)當前範圍下的全局變量。

本文原創地址:https://www.linuxprobe.com/python-debugging-methods.html

相關文章
相關標籤/搜索