在 Python 中断言没有回溯

Assert without the traceback in Python

我正在尝试简化以下内容:

if x < 0:
  print('we don't do negative numbers')
else: 
  NORMAL CODE HERE

我最近学习了 assert 命令,并钦佩它能够将我之前的行简化为:

assert x > 0, 'errorText'
NORMAL CODE HERE

不过,我不希望错误给出回溯。我只想要 if/else 给出的那一行。

有没有办法像异常一样将 assertionError 设为 return 单行,或者我真的需要在任何地方都保留 运行 if/else 吗?

Python 中的 assert 语句用于调试或测试。当条件不是 True 时,它用于停止程序的执行。调试时,您可以在代码中包含这些语句以帮助追踪错误。然后在错误修复后将其删除。在生产代码中使用 assert 是个坏主意。

正如您使用 assert 编写的那样,如果 x 小于零并且后面的代码不会 运行.

,您的程序将终止

您应该继续使用 if/else 方法来提供两个所需的代码路径。一条路径记录 x 小于零,另一条路径执行块中的代码 NORMAL CODE HERE。

如果此时 x 绝不能小于 0,并且不能执行其余代码,那么您应该引发一个可以在调用代码中捕获的异常。

def method_using_positive_numbers(x):
    if x < 0:
        raise ValueError("we don't do negative numbers")
    NORMAL CODE HERE

如果条件不成立,另一种选择是从方法中 return。

def method_using_positive_numbers(x):
    if x < 0:
        print("we don't do negative numbers")
        return
    NORMAL CODE HERE