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) ,然後會判斷第二個運算式的真假值。

參考資料

上一頁 單元 28 - with 陳述
回 Python 簡易手冊 首頁
下一頁 單元 30 - lambda 陳述
回 Python 教材首頁
回程式語言教材首頁