由于某种原因,以下逻辑评估中存在语法错误:
True is not None and not False is not not not None
错误可以缩小到这个陈述:
False is not not None
突出显示第二个not
。
这根本不重要,但我只是对这可能失败的原因感兴趣。有什么想法吗?
答案 0 :(得分:2)
is not not
不起作用。这不是一件坏事,因为它永远不需要。
is not
与is
具有相同的运算符优先级,这是有道理的。 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)
要记住的另一件事是is
,not
和is not
实际上是三个单独的运算符。换句话说,is not
不是({1}}和is
的组合(不是双关语)。
就你的例子而言
not
Python尝试将False is not not None
和False
传递给not
运算符。由于is not
不是有效的操作数,因此会产生语法错误。