什么是 pythonic 方式来执行多个条件,一个接一个,同时向用户显示哪个是第一个失败的

What is the pythonic way to execute multiple conditions, one after the other, while showing to the user which is the first to fail

假设我有这个工作代码:

def check_some_conds(args):
    assert (condA(args) or
            condB(args))

    assert condC(args)
    assert condD(args)

    return True

(是的,我知道 assert 不好,但请稍等片刻)

现在,当我调用此函数时,我可以(或多或少)通过使用 except AssertionError: 并通过对回溯模块施展魔法来检索第一个失败的断言。

然而,这并不理想,因为:

我正在寻找一种方法:

如果那真的不可能,请随时为我的问题提出部分答案

遍历您的条件并在最后引发错误:

fail = False
for condition in [cond1, cond2, cond3 ...]:

    if not condition(args):
        print(condition.__name__, "failed")
        fail = True
    else:
        print(condition.__name__, "succeeded")
if fail: raise ...