在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给出的那一行。

有没有一种方法可以让assemblyError像异常一样返回单行,或者如果/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

另一个选项是,如果条件不为true,则从方法返回。

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

最新更新