内联分配ifelse在Python中引发错误
我正在做一些验证,写起来会很方便(Pythonic?)
my_variable = value if condition else raise ValueError('Bla bla bla')
我已经尝试过但不允许。有什么方法可以做类似的事情并避免更麻烦的“传统方式”?
if condition:
my_variable = value
else:
raise ValueError('Bla bla bla')
回答
它不起作用,因为在 之后需要else一个表达式,而不是一个语句。
可以通过定义一个通用函数来解决这个问题:
def _raise(exception_type, msg):
raise exception_type(msg)
my_variable = value if condition else _raise(ValueError, 'bla bla')
但是我会在真正的代码中这样做吗?可能不是。它不像替代方案那样具有可读性,并且可能会在阅读代码时增加心理负担。