【问题标题】:raise Assertionerror vs. assert python引发 Assertionerror 与断言 python
【发布时间】:2018-01-23 18:41:31
【问题描述】:

raise AssertionErrorassert 构建“故障”之间的最大区别是什么?对代码有什么影响?在某种程度上,其中一个或另一个更 Pythonic 吗?

我提出这个问题的原因是因为我正在学习编程。现在我们有一个练习,例如当x != 0 我们需要得到一个AssertionError "false"。

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

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

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

assert x == 0,"fout"

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

非常感谢。

【问题讨论】:

  • 你能详细说明你的问题吗?通常,断言用于测试代码和查找错误。 assert 语句可以用编译器标志忽略。
  • @juanpa.arrivillaga 我解释了一点。希望这会有所帮助:)
  • 正如 juanpa 解释的那样,assert 语句通常用于在开发过程中进行单元测试或发现问题。这并不意味着您一定会看到错误。另一方面,引发AssertionError 意味着错误将由代码引发,并且任何调用进程都可以根据需要处理此错误。
  • @Brandon Barney。因此,如果我得到了正确的答案,那么您在开发过程中使用断言,但是对于完成的程序,您使用 Assertionerror。还是不完全?你能举一个没有看到错误的例子吗?我不太明白这是怎么发生的..

标签: python error-handling assert


【解决方案1】:

这两个代码示例是等效的,除了assert 语句可以使用-O 命令行标志全局禁用。

【讨论】:

  • 这个命令行标志。这是我手动输入的吗? (我以前从未听说过这个,第一轮谷歌也没有帮助)
  • 当您通过键入python myscript.py 运行代码时,您可以改为键入python -O myscript.py。 (如果您从 IDE 而不是命令行运行代码,您的 IDE 可能在某个地方有一个选项可以实现相同的效果。)
  • 它也可以对pylint产生影响。
猜你喜欢
  • 2018-04-28
  • 2021-12-11
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
相关资源
最近更新 更多