我试图简化以下内容:
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到处都是,我真的需要继续运行吗?
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