我有一个AND
和OR
函数,用于计算表达式。我想将这些项目链接在一起,如下所示:
>>> 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,这就是传递它的方式。解决这个问题的好方法是什么?
答案 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))))