天天看點

10.15 Python assert調試程式

前面章節介紹了如何使用 IDLE 自身的調試工具調試程式,除此之外,Python 還提供了 assert 語句,也可以用來調試程式。

《Python assert斷言)》一節中,已經對 assert 的基本用法做了簡單介紹,assert 語句的完整文法格式為:

assert 條件表達式 [,描述資訊]

assert 語句的作用是:當條件表達式的值為真時,該語句什麼也不做,程式正常運作;反之,若條件表達式的值為假,則 assert 會抛出 AssertionError 異常。其中,[,描述資訊] 作為可選參數,用于對條件表達式可能産生的異常進行描述。

例如:

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

程式運作結果為:

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

通過運作結果可以看出,當 assert 中條件表達式的值為假時,程式将抛出異常,并附帶異常的描述性資訊,與此同時,程式立即停止執行。

通常情況下,assert 可以和 try except 異常處理語句配合使用,以前面代碼為例:

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 語句。