构建“断层”的
raise AssertionError
和assert
之间的最大区别是什么?对代码有什么影响?在某种程度上,其中一个更Pythonic吗?
我问这个问题的原因是因为我正在学习编程。现在我们有一个练习,例如当
x != 0
时,我们需要得到 AssertionError
“假”。
我在网上查了一下,发现了以下代码:
if x != 0:
raise AssertionError ("false")
但是我的老师也经常使用以下内容:
assert x == 0,"fout"
每种方法的优缺点是什么?
提前非常感谢。
这两个代码示例是等效的,不同之处在于可以使用
assert
命令行标志全局禁用 -O
语句。
参见:
# script.py
assert 0, "statement"
raise AssertionError("error")
使用和不使用
-O
标志会产生不同的错误:
$ python script.py
Traceback (most recent call last):
File "/tmp/script.py", line 1, in <module>
assert 0, "statement"
AssertionError: statement
$ python -O script.py
Traceback (most recent call last):
File "/tmp/script.py", line 2, in <module>
raise AssertionError("error")
AssertionError: error