【发布时间】:2011-08-31 07:32:43
【问题描述】:
在 Python 中将布尔值与 == 进行比较。但是当我应用布尔 not 运算符时,结果是语法错误:
Python 2.7 (r27:82500, Sep 16 2010, 18:02:00)
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> True == True
True
>>> False == False
True
>>> True is not False
True
>>> True == not False
File "<stdin>", line 1
True == not False
^
SyntaxError: invalid syntax
>>>
为什么这是一个语法错误?我希望not False 是一个返回布尔值的表达式,而True == <x> 是一个有效的语法,只要<x> 是一个具有有效语法的表达式。
【问题讨论】:
-
请注意,“True is not False”不与“True is (not False)”相同。 “is not”是一个独特的运算符,表示“不等于”,而“True is (not False)”读作“True 与 False 的布尔否定相同”。只是一个评论,因为你的例子似乎,好像你会假设,这两者都是一样的。
-
True == not是实际的语法错误,之后的任何内容都无关紧要。 -
并且作为记录,对于 any 比较运算符加上
not,无论比较的类型如何,这都会失败。True < not False、3 <= not 2、'Foo' > not 'False'、3.3 >= not 4.5、{} is not not []、set() == not None和slice() != not lambda: xall 引发相同的语法错误。这不仅限于== not和布尔值。
标签: python boolean comparison-operators