擅长:python、mysql、java
<p>其他的答案已经向您表明,该行为是由运算符优先级决定的,如<a href="https://docs.python.org/3/reference/expressions.html#operator-precedence" rel="noreferrer">here</a>所述。</p>
<p>下次你有类似的问题时,我会教你如何自己找到答案。可以使用<a href="https://docs.python.org/3/library/ast.html" rel="noreferrer">^{<cd1>}</a>模块解构表达式的解析方式:</p>
<pre><code>>>> 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()))])
</code></pre>
<p>从这里我们可以看到代码被解析<a href="https://stackoverflow.com/a/37313506/674039">as Tim Peters explained</a>:</p>
<pre><code>Module([Expr(
Tuple([
Compare(
Tuple([Num(1)], Load()),
[Eq()],
[Num(1)]
)
], Load())
)])
</code></pre>