首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据日志:为什么(X==False) & (Y==not(X))不求值?

数据日志:为什么(X==False) & (Y==not(X))不求值?
EN

Stack Overflow用户
提问于 2017-10-24 00:24:24
回答 2查看 193关注 0票数 0

我使用的是pyDatalog (Python2.7)。使用像+这样的算术函数,我可以引用一个较早的绑定变量:

代码语言:javascript
复制
>>> (X==1) & (Y==X+1)
[(1, 2)]

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

代码语言:javascript
复制
>>> not(False)
True
>>> (X==False) & (Y==not(X))
  File "<stdin>", line 1
    (X==False) & (Y==not(X))
                       ^
SyntaxError: invalid syntax
>>> 
EN

回答 2

Stack Overflow用户

发布于 2017-10-26 01:03:34

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

代码语言:javascript
复制
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)))
票数 1
EN

Stack Overflow用户

发布于 2017-10-24 00:27:44

它是Python中的运算符优先级

代码语言:javascript
复制
(Y == (not(X))

代码语言:javascript
复制
(Y == not X)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46894120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档