我正在尝试简化以下内容:
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像异常那样返回单行,或者我是否真的需要继续运行if/else的处处?
assert
Python中的语句用于调试或测试.当条件不是时,它用于停止执行程序True
.调试时,您可以在代码中包含这些语句,以帮助跟踪错误.一旦修复了bug,就删除它们.assert
在生产代码中使用是个坏主意.
正如您使用它编写的那样assert
,如果x小于零并且后面的代码不会运行,程序将终止.
您应该继续使用if/else方法来提供两个所需的代码路径.记录x小于零的一条路径,执行块代码的另一条路径正常代码在这里.
如果x此时永远不应该小于0,并且不能执行剩余的代码,那么你应该引发一个可以在调用代码中捕获的异常.
def method_using_positive_numbers(x): if x < 0: raise ValueError("we don't do negative numbers") NORMAL CODE HERE
另一种选择是如果条件不为真,则从方法返回.
def method_using_positive_numbers(x): if x < 0: print("we don't do negative numbers") return NORMAL CODE HERE