這個問題是如何在一些場景下使用斷言表達式,通常會有人誤用它,所以我決定寫一篇文章來說明何時使用斷言,什么時候不用。
為那些還不清楚它的人,Python的assert是用來檢查一個條件,如果它為真,就不做任何事。如果它為假,則會拋出AssertError并且包含錯誤信息。例如:
py> x = 23py> assert x > 0, "x is not zero or negative"py> assert x%2 == 0, "x is not an even number"Traceback (most recent call last):File "", line 1, inAssertionError: x is not an even number
很多人用assert作為一個很快和容易的方法來在參數錯誤的時候拋出異常。但這樣做是錯的,非常錯誤,有兩個原因。首先AssertError不是在測試參數時應該拋出的錯誤。你不應該像這樣寫代碼:
if not isinstance(x, int):raise AssertionError("not an int")你應該拋出TypeError的錯誤,assert會拋出錯誤的異常。
但是,更危險的是,有一個關于assert的困擾:它可以被編譯好然后從來不執行,如果你用 主站蜘蛛池模板: 彩票| 衡南县| 普陀区| 株洲市| 大同市| 商丘市| 灵宝市| 平昌县| 施甸县| 宁武县| 屏东市| 灌阳县| 仙桃市| 永清县| 民乐县| 宁城县| 方正县| 梁山县| 宿松县| 安义县| 澎湖县| 安岳县| 崇礼县| 香格里拉县| 商南县| 教育| 长宁县| 南江县| 峨边| 阜阳市| 鹤庆县| 邮箱| 台中市| 金寨县| 榆树市| 桐乡市| 天台县| 富平县| 临泉县| 临泉县| 池州市|