在 Python 中使用斷言
在 Python 中,除了使用 try 語句來處理程式執行中出現的異常,其實我們還可以使用斷言(Assertions)來處理異常。
斷言使用 assert 關鍵字,它的語法格式為:
assert Expression[, Arguments]
當它遇到一個斷言語句,Python 直譯器評估計算之後的表示式,希望是 True 值。如果表示式為 False,就會觸發 AssertionError 異常。異常引數(Arguments)其實就是在斷言表示式後新增字串資訊,用來解釋斷言並更好的知道是哪裡出了問題。
理解斷言的最簡單的方法就是把它比作 raise-if 語句(更確切來說是 raise-if-not)。即對一個表示式進行測試,如果結果為 False,則觸發異常。也就是說,assert expression 語句等價於:
if not expression: raise AssertionError
如果斷言失敗,Python 使用 Arguments 作為 AssertionError 異常的引數。同樣可以用 try-except 語句來捕獲並處理 AssertionError 異常,但是如果沒有處理 AssertionError,Python 將終止該程式併產生一個回溯。
assert 判斷的是表示式,如果需要同時判斷多個表示式,可以這樣:
assert (expression1 and expression2), "prompt..."
除錯模式
實際上,斷言是一種理智檢查,通常用於開發階段,在需要確保某個條件一定為真才能讓程式正常工作的情況就很適合使用斷言。比如,程式設計師常常放置斷言來檢查輸入的有效,或在一個函式呼叫後檢查有效的輸出。當程式的測試完成,可以選擇將斷言開啟或關閉。
關閉斷言的方法是在執行 Python 程式的時候加上 -O 引數,如下:
python -O 原始檔
assert 語句不應用於必須執行以確保程式正確的程式碼,因為如果 Python 執行在最優模式中(通過對直譯器使用 -O 選項進入該模式),assert 語句將會被忽略。特別是不能用 assert 語句檢查使用者輸入,相反,assert 語句用於檢查應該始終為真的內容。如果 assert 引發異常,這意味著程式中存在 bug,而不是使用者出現了錯誤。因此,對於諸如檢查輸入是否有效的操作,應該使用傳統的 if 語句和相應的錯誤處理程式碼替換 assert 語句。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011087/viewspace-2854312/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python斷言方法assertPython
- 『政善治』Postman工具 — 9、在Postman中使用斷言Postman
- 在 Python 除錯過程中設定不中斷的斷點Python除錯斷點
- JSON在Python中的使用JSONPython
- reload在python中的使用Python
- Java中的斷言assertJava
- Python assert斷言函式及用法Python函式
- 十二、Jmeter 斷言-響應斷言、Json 斷言和 Beanshell 斷言JMeterJSONBean
- input在python中的使用注意Python
- 【pytest系列】- assert斷言的使用
- sqlalchemy在python中的使用(基本使用)一SQLPython
- Python全棧開發之—assert斷言Python全棧
- Pytest學習(二) - 斷言的使用
- Python語言在人工智慧(AI)中的優勢Python人工智慧AI
- python if判斷的使用格式Python
- 組合語言--單步中斷組合語言
- python中字串格式判斷Python字串
- Python中None如何判斷PythonNone
- AES演算法在Python中的使用演算法Python
- 使用 Beautiful Soup 在 Python 中抓取網頁Python網頁
- UI自動化使用斷言示例1UI
- 肯定賦值斷言與非空斷言賦值
- SMP PPI中斷使用
- junit 測試中各種斷言用法
- JavaScript中不得不說的斷言?JavaScript
- 如何使用Python判斷奇偶數?Python
- 斷言操作
- 使用 singledispatch 在 Python 中追溯地新增方法Python
- Mock 在 Python 單元測試中的使用MockPython
- Java 斷言 Assert 使用教程與最佳實踐Java
- TestNg中的斷言你真的瞭解嗎
- 【Node斷言assert】
- Nodejs 斷言 assertNodeJS
- JMeter—斷言(十一)JMeter
- 型別斷言型別
- jmeter新增斷言JMeter
- unittest斷言-assertIn
- sqlalchemy在python中的使用(關於查詢)二SQLPython