为什么等式在 Python 中似乎不是对称关系?
Why does equality not appear to be a symmetric relation in Python?
我正在学习比较运算符,并且正在研究 True 和 False 语句。我运行下面的代码在Pythonshell:
not(5>7) == True
正如预期的那样,这返回了 True
。但是,我然后 运行 下面的代码:
True == not(5>7)
并且存在语法错误。这是为什么?如果第一行代码是有效的语法,那么第二行代码肯定也应该是有效的。我哪里做错了?
(背景知识,我的理解是Python中的=
只用于变量赋值,而==
与数学符号'=密切相关'.)
语法错误似乎是由 not
关键字引起的,而不是(双关语)相等运算符:
True == not (5 > 7)
# SyntaxError: invalid syntax
True == (not (5 > 7))
# True
解释可以在docs:
中找到
not
has a lower priority than non-Boolean operators, so not a == b
is interpreted as not (a == b)
, and a == not b
is a syntax error.
基本上,解释器认为您是在比较 True
和 not
。
我正在学习比较运算符,并且正在研究 True 和 False 语句。我运行下面的代码在Pythonshell:
not(5>7) == True
正如预期的那样,这返回了 True
。但是,我然后 运行 下面的代码:
True == not(5>7)
并且存在语法错误。这是为什么?如果第一行代码是有效的语法,那么第二行代码肯定也应该是有效的。我哪里做错了?
(背景知识,我的理解是Python中的=
只用于变量赋值,而==
与数学符号'=密切相关'.)
语法错误似乎是由 not
关键字引起的,而不是(双关语)相等运算符:
True == not (5 > 7)
# SyntaxError: invalid syntax
True == (not (5 > 7))
# True
解释可以在docs:
中找到
not
has a lower priority than non-Boolean operators, sonot a == b
is interpreted asnot (a == b)
, anda == not b
is a syntax error.
基本上,解释器认为您是在比较 True
和 not
。