1. 程式人生 > >python assert的用處

python assert的用處

理解 程序 2.0 assertion 表達 code vid one int

python assert 句語格式及用法很簡單。通常程序在運行完之後拋出異常,使用assert可以在出現有異常的代碼處直接終止運行。 而不用等到程序執行完畢之後拋出異常。

python assert的作用

python assert如果發生異常就說明表達示為假。可以理解表示式返回 值為假 時就會觸發異常。

assert語句的語法格式

assert expression [, arguments]
assert 表達式 [, 參數]

附加說明:assert也可以用於多個表達式的: assert expression1, expression2。
註意:表達式=false 時,則執行其後面的異常。

我們看幾個示例
1:單個表達式:

a = 1
assert a < 0, 出錯了,a大於0 啊
print(這裏不會輸出)

輸出:

Traceback (most recent call last):
  File "main.py", line 3, in <module>
    assert a < 0, 出錯了,a大於0 啊
AssertionError: 出錯了,a大於0 啊

2:多個表達式:

a = 1
b = -1
assert a > 0, b < 0
print(正常輸出,表達式返回真了) #
輸出:正常輸出,表達式返回真了

3:嘗試捕獲 assert 異常:

import traceback

try:
    assert a < 0
except AssertionError as aeeor:  # 明確拋出此異常
    # 拋出 AssertionError 不含任何信息,所以無法通過 aeeor.__str__()獲取異常描述
    print(AssertionError, aeeor, aeeor.__str__())

    # 通過 traceback 打印詳細異常信息
    print(traceback 打印異常
) traceback.print_exc() except: # 不會命中其他異常 print(assert except) try: raise AssertionError(測試 raise AssertionError) except AssertionError as aeeor: print(raise AssertionError 異常, aeeor.__str__())

輸出:

1 AssertionError
2 traceback 打印異常
3 Traceback (most recent call last):
4   File "main.py", line 7, in <module>
5     assert a < 0
6 AssertionError
7 raise AssertionError 異常 測試 raise AssertionError

4:函數調用拋出異常:

# 除法運算
def foo(value, divide):
    assert divide != 0
    return value / divide


print(4除以2 =, foo(4, 2))  # 執行成功
print(4除以0 =, foo(4, 0))  # 拋出異常

輸出:

1 4除以2 = 2.0
2 Traceback (most recent call last):
3   File "main.py", line 8, in <module>
4     print(‘4除以0 =‘, foo(4, 0))  # 拋出異常
5   File "main.py", line 3, in foo
6     assert divide != 0
7 AssertionError

通過上面幾個示例,相信大家也深刻理解aseert的用處了
總結: 表達式返回false 時。直接拋出異常終止繼續執行。

python assert的用處