Python 簡易手冊
單元 29 - assert 陳述
關鍵字 (keyword) assert 判斷其後的運算式 (expression) 是否為真,如果不是真會發起 AssertionError ,簡單的例子如下
1 2 3 4 5 6 7 8 9 10 11 | # 變數 a 設定為浮點數 a = 0.1 # 判斷變數 a 是否為整數型態 assert type(a) is int # 檔名: assert_demo.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 3 月 |
這裡先將變數 (variable) a 設定為 0.1 ,再用 assert 來判斷變數 a 是否為整數型態
4 5 | # 判斷變數 a 是否為整數型態 assert type(a) is int |
由於變數 a 不是整數型態,因此執行會發起 AssertionError ,如下
> python assert_demo.py |
Traceback (most recent call last): File "assert_demo.py", line 5, in <module> assert type(a) is int AssertionError |
> |
基本上 assert 陳述主要用途為除錯,其為以下形式的語法糖
if __debug__: if not expression: raise AssertionError |
__debug__ 為內建變數,一般情況下為 True 。
另外 assert 陳述 (statement) 最多可以接兩個運算式,其為以下形式的語法糖
if __debug__: if not expression1: raise AssertionError(expression2) |
舉例如下
1 2 3 4 5 6 7 8 9 10 11 12 | # 設定變數 a 及 b a = 1 b = 2 # 判斷變數 a 、 b 的大小 assert a > b, a <= b # 檔名: assert_demo2.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 3 月 |
這裡 assert 後面接兩個運算式,由於 a 小於 b ,所以會發起 AssertionError(a <= b) 的例外,執行結果如下
> python assert_demo2.py |
Traceback (most recent call last): File "assert_demo2.py", line 6, in <module> assert a > b, a <= b AssertionError: True |
> |
也就是說 assert 後面接兩個運算式,如果第一個運算式為假就會發起例外 (exception) ,然後會判斷第二個運算式的真假值。