使用assert
,您可以轻松测试条件而无需if/raise
:
assert condition, msg
与
相同if not condition:
raise AssertionError(msg)
我的问题是,是否可以使用assert
来提升不同类型的Errors
。例如,如果您缺少特定的环境变量,那么返回EnvironmentError
会很有用。这可以使用try/catch
或类似if/raise
手动完成:
if not variable in os.environ:
raise EnvironmentError("%s is missing!" % variable)
或
try:
assert variable in os.environ
except:
raise EnvironmentError("%s is missing!" % variable)
但是我想知道是否有一种我无法找到的某种类型的快捷方式,或者是否有一些解决方法可以让多个except
向上叠加。
答案 0 :(得分:1)
内置assert
是一项调试功能,使用范围很窄,如果您运行python -O
,甚至可以从代码中删除。
如果您想根据具有单线表达式的条件引发各种异常,请编写函数!
assert_env(variable in os.environ)
甚至
assert_env_var(variable) # knows what to check
如果你想要一个超通用/退化的情况,考虑一个接受所有作为参数的函数(可能有一些默认值):
my_assert(foo == bar, FooException, 'foo was not equal to bar')