python 3.x逻辑中的奇怪语法错误

时间:2014-01-31 16:36:37

标签: python logic

由于某种原因,以下逻辑评估中存在语法错误:

True is not None and not False is not not not None

错误可以缩小到这个陈述:

False is not not None

突出显示第二个not

这根本不重要,但我只是对这可能失败的原因感兴趣。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

is not not不起作用。这不是一件坏事,因为它永远不需要。

is notis具有相同的运算符优先级,这是有道理的。 is的运算符优先级高于not,否则x is not y意味着x is (not y),而需要x is not (y)

但你无法弄清楚a is not not b是否因为is not之前无法得到not b的答案。

答案 1 :(得分:2)

要记住的另一件事是isnotis not实际上是三个单独的运算符。换句话说,is not不是({1}}和is的组合(不是双关语)。

就你的例子而言

not

Python尝试将False is not not None False传递给not运算符。由于is not不是有效的操作数,因此会产生语法错误。