在函数调用中链接 kwargs
Chaining kwargs in a function call
我有一个计算表达式的 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: positional argument follows keyword argument
这是因为 OR
评估为布尔值而不是 kwarg,这是它需要传递的方式。解决这个问题的好方法是什么?
只需重新安排调用,使 kwargs 位于 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))))
我有一个计算表达式的 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: positional argument follows keyword argument
这是因为 OR
评估为布尔值而不是 kwarg,这是它需要传递的方式。解决这个问题的好方法是什么?
只需重新安排调用,使 kwargs 位于 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))))