首頁 > 人文
Python 拓展之斷言(assert)
由 Python空間 發表于 人文2023-01-07
簡介cnt -= amountelse:print(‘cnt is not enough’)在上面的程式碼中,我們設定的是 deposit() 和 withdraw() 方法的引數 amount 必須大於零,這裡用的就是斷言,如果不滿足條件的話
什麼是斷言,斷言有什麼作用?
本文字數:1267 字
閱讀本文大概需要:4 分鐘
寫在之前
在昨天的文章中(零基礎學習 Python 之處理異常)中學習了處理異常的正確姿勢,今天我們繼續來學習“錯誤 & 異常”裡比較重要的一個知識點:「assert」。
assert 翻譯成中文就是「斷言」的意思,它是一句等價於布林真的判斷,如果它發生異常的話,意味著表示式為假。
斷言(assert)
首先讓我們先來看點簡單的程式碼,從程式碼中理解 assert。
>>> assert ‘a’ == ‘a’
>>> assert ‘a’ == ‘b’
Traceback (most recent call last):
File “
AssertionError
assert 的應用場景很像它在漢語中的意思:當程式執行到某個節點的時候,就斷定某個變數的值必然是什麼,或者是物件必然擁有某個屬性等。簡單點來說的話,就是斷定是什麼東西就必然是什麼東西,如果不是,就丟擲異常。
接下來我們再來看一段稍微複雜點的程式碼:
classAccount(object):
def__init__(self,num):
self。number = num
self。cnt = 0
defdeposit(self,amount):
try:
assert amount > 0
self。cnt += amount
except:
print(‘the amount can not be zero。’)
defwithdraw(self,amount):
assert amount > 0
if amount <= self。cnt:
self。cnt -= amount
else:
print(‘cnt is not enough’)
在上面的程式碼中,我們設定的是 deposit() 和 withdraw() 方法的引數 amount 必須大於零,這裡用的就是斷言,如果不滿足條件的話就會直接報錯。比如像下面這樣來執行:
if __name__ == “__main__”:
a = Account(100)
a。deposit(-10)
出現的結果如下所示:
the amount can not be zero。
這就是斷言 assert 的引用,那麼什麼時候是引用斷言的最佳時機呢?如果沒有特殊的目的的話,斷言主要應用於以下情況(參考《Python使用斷言的最佳時機》):
1。防禦性的程式設計;
2。執行時對程式邏輯的檢測;
3。合約性檢查(比如前置或者後置條件);
4。程式中的常量;
5。檢查文件。
寫在之後
assert 就這些東西,「錯誤 & 異常」到這差不多就結束了。異常處理是程式語言或者計算機硬體裡的一種機制,用於處理軟體或資訊系統中出現的異常狀況。
透過異常處理,我們可以對使用者在程式中的非法輸入進行控制和提示,以防程式崩潰。從程序的視角來看,硬體終端屬於可恢復異常,雖然異常一般與程式流本身無關。
異常是一種很有用的機制,用於通知外界該子程式不能正常執行,比如輸入的資料無效或者所需的資源不可用等,如果系統沒有異常機制,則程式設計師需要用返回值來標示發生了哪些錯誤。
最後,如果你覺得本篇文章對你有所幫助的話,歡迎點贊轉發,先行謝過。
The end。