数据日志:为什么(X==False)和(Y==not(X))不计算?

2024-04-19 10:44:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pyDatalog(在python2.7中)。使用像+这样的算术函数,我可以引用前面的绑定变量:

>>> (X==1) & (Y==X+1)
[(1, 2)]

但是我不能以同样的方式使用布尔not运算符:

>>> not(False)
True
>>> (X==False) & (Y==not(X))
  File "<stdin>", line 1
    (X==False) & (Y==not(X))
                       ^
SyntaxError: invalid syntax
>>> 

Tags: falsetruestdin方式linenot运算符file
2条回答

您可以使用自定义解析器:

from pyDatalog import pyDatalog

@pyDatalog.predicate()
def not_2(X,Y):
    if X.is_const():
        yield (X.id, not(X.id))
    elif Y.is_const():
        yield (not(Y.id), Y.id)

@pyDatalog.program()
def _():
    print ((X==False) & (not_(X,Y)))

在Python中,它是运算符优先级

(Y == (not(X))

或者

(Y == not X)

相关问题 更多 >