Python 速查手冊

4.1 簡單陳述 assert

本書已有新版,請參考 Python 簡易手冊 - 目錄

關鍵字 (keyword) 用來進行簡單的條件 (condition) 判斷,如果條件為真,程式 (program) 繼續執行,反之條件為假的話,就會發起 Assertion 例外 (exception) ,中斷程式執行。

最基本的使用就是直接在 assert 後面接上運算式 (expression) ,這裡用 True ,逗號後面則是 Assertion 例外的提示訊息,由於是 True ,因此沒有發起例外

assert True, "繼續執行"

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:assert01.py
# 功能:示範 assert 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 assert01.py
$

反之 assert 後面如果是 False 就會直接發起例外

assert False, "繼續執行"

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:assert02.py
# 功能:示範 assert 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 assert02.py
Traceback (most recent call last):
  File "assert02.py", line 1, in <module>
    assert False, "繼續執行"
AssertionError: 繼續執行
$

這樣的方式可以用在函數 (function) 或方法 (method) 中,檢查參數 (parameter) 是否符合需求

def divide(a, b):
    assert b != 0, "除數不能是零"
    return a / b

print(divide(1, 2))
print(divide(1, 0))

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:assert03.py
# 功能:示範 assert 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 assert03.py
0.5
Traceback (most recent call last):
  File "assert03.py", line 6, in <module>
    print(divide(1, 0))
  File "assert03.py", line 2, in divide
    assert b != 0, "除數不能是零"
AssertionError: 除數不能是零
$

如果程式不想被中斷結束,就把具有 assert 的函數或方法放到 try-except 例外處理的複合陳述中執行,這裡是用變數 (variable) r 取得 divide() 函數的回傳值 (return value) ,如果例外發生,就將變數 r 設定為整數 1

def divide(a, b):
    assert b != 0, "除數不能是零"
    return a / b
    
r = -1
try:
    r = divide(1, 0)
except:
    r = 1

print(1)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:assert04.py
# 功能:示範 assert 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 assert04.py
1
$

換句話說, assert 就像是 ifraise 的簡化版本

def divide(a, b):
    if b == 0:
        raise BaseException("除數不能是零")
    return a / b

print(divide(1, 2))
print(divide(1, 0))

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:assert05.py
# 功能:示範 assert 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 assert05.py
0.5
Traceback (most recent call last):
  File "assert05.py", line 7, in <module>
    print(divide(1, 0))
  File "assert05.py", line 3, in divide
    raise BaseException("除數不能是零")
BaseException: 除數不能是零
$

相關教學影片

上一頁:單元 4 - 陳述
Python 速查手冊 - 目錄
下一頁: 4.2 簡單陳述 pass
回 Python 教材首頁
回程式語言教材首頁