Python assert偵錯程式

2020-07-16 10:04:51
前面章節介紹了如何使用 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:UsersmengmaDesktop1.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 語句。