为什么等式在 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.

基本上,解释器认为您是在比较 Truenot