在 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
我正在尝试简化以下内容:
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