我试图简化以下内容:
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&#39;
答案 0 :(得分:6)
Python中的assert
语句用于调试或测试。当条件不是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