我使用的是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
>>> 发布于 2017-10-26 01:03:34
您可以使用自定义解析器:
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)))发布于 2017-10-24 00:27:44
它是Python中的运算符优先级
(Y == (not(X))或
(Y == not X)https://stackoverflow.com/questions/46894120
复制相似问题