内联分配 if else 在 Python 中引发错误

use*_*780 -1 python

我正在做一些验证,写起来会很方便(Pythonic?)

my_variable = value if condition else raise ValueError('Bla bla bla')
Run Code Online (Sandbox Code Playgroud)

我已经尝试过但不允许。有什么方法可以做类似的事情并避免更麻烦的“传统方式”?

if condition:
    my_variable = value
else:
    raise ValueError('Bla bla bla')
Run Code Online (Sandbox Code Playgroud)

Dee*_*ace 5

它不起作用,因为在 之后需要else一个表达式,而不是一个语句。

可以通过定义一个通用函数来解决这个问题:

def _raise(exception_type, msg):
    raise exception_type(msg)

my_variable = value if condition else _raise(ValueError, 'bla bla')
Run Code Online (Sandbox Code Playgroud)

但是我会在真正的代码中这样做吗?可能不是。它不像替代方案那样具有可读性,并且可能会在阅读代码时增加心理负担。