在函数调用中束缚鞭子

问题描述 投票:0回答:1

我有一个计算表达式的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,这就是传递它的方式。什么是解决此问题的好方法?

python python-3.x kwargs
1个回答
1
投票

简单地重新排列调用以使参数位于参数之后:

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))))
© www.soinside.com 2019 - 2024. All rights reserved.