在函数调用中链接kwarg

时间:2020-03-22 19:46:16

标签: python python-3.x keyword-argument

我有一个ANDOR函数,用于计算表达式。我想将这些项目链接在一起,如下所示:

>>> AND(
        # kwarg
        Neutered=True, 
        # reduces/evaluates to arg/value
        OR(Black=False, AND(Female=False, NOT(White=True)), AND(NOT(Female=False), OR(White=True, Tan=True))))

但是,这样做时会出现此错误:

SyntaxError:位置参数紧跟关键字参数

这是因为OR的计算结果是布尔值而不是kwarg,这就是传递它的方式。解决这个问题的好方法是什么?

1 个答案:

答案 0 :(得分:1)

只需重新排列调用以使参数位于args之后即可

AND(
    OR(AND(NOT(White=True), Female=False), AND(NOT(Female=False), OR(White=True, Tan=True)), Black=False),
    Neutered=True)

或者,如果可能的话,使用dict拆包运算符:

AND(
    Neutered=True,
    **OR(Black=False, **AND(Female=False, **NOT(White=True)), **AND(NOT(Female=False), OR(White=True, Tan=True))))