引发断言错误与断言Python

问题描述 投票:0回答:1

构建“断层”的

raise AssertionError
assert
之间的最大区别是什么?对代码有什么影响?在某种程度上,其中一个更Pythonic吗?

我问这个问题的原因是因为我正在学习编程。现在我们有一个练习,例如当

x != 0
时,我们需要得到
AssertionError
“假”。

我在网上查了一下,发现了以下代码:

if x != 0:
    raise AssertionError ("false")

但是我的老师也经常使用以下内容:

assert x == 0,"fout"

每种方法的优缺点是什么?

提前非常感谢。

python error-handling assert
1个回答
22
投票

这两个代码示例是等效的,不同之处在于可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.