其他答案已经向您表明,该行为是由于运算符的优先级所致,如此处所述。
下次您遇到类似问题时,我将向您展示如何找到答案。您可以使用以下ast
模块来解构表达式的解析方式:
>>> import ast
>>> source_code = '(1,) == 1,'
>>> print(ast.dump(ast.parse(source_code), annotate_fields=False))
Module([Expr(Tuple([Compare(Tuple([Num(1)], Load()), [Eq()], [Num(1)])], Load()))])
从中我们可以看到代码已按照TimPeters的解释进行了解析:
Module([Expr(
Tuple([
Compare(
Tuple([Num(1)], Load()),
[Eq()],
[Num(1)]
)
], Load())
)])