Python 混淆比较输出

Python 混淆比较输出,python,python-3.x,comparison-operators,Python,Python 3.x,Comparison Operators,我对以下几点感到困惑: >>> 1,2 == 1,2 (1, False, 2) =操作符应该只返回bool(或者至少我这么认为)。 我本来希望,(True,True)假设行的处理方式类似于a,b=1,2,但执行比较而不是赋值。或者,有一个错误。但绝对不是(1,False,2) 有人能解释一下这里发生了什么吗?这是: 1,2 == 1,2 作为三元素元组进行计算,分别包含1、2==1和2。您需要在此处使用两个括号: (1, 2) == (1, 2) 这在以下文件中说明:

我对以下几点感到困惑:

>>> 1,2 == 1,2
(1, False, 2)
=
操作符应该只返回bool(或者至少我这么认为)。 我本来希望,
(True,True)
假设行的处理方式类似于
a,b=1,2,但执行比较而不是赋值。或者,有一个错误。但绝对不是
(1,False,2)

有人能解释一下这里发生了什么吗?

这是:

1,2 == 1,2 
作为三元素元组进行计算,分别包含
1
2==1
2
。您需要在此处使用两个括号:

(1, 2) == (1, 2)
这在以下文件中说明:

除非显示列表或集合的一部分,否则表达式列表 包含至少一个逗号将生成一个元组。元组的长度 是列表中表达式的数目。这些表达是 从左到右计算

@亚力克杜吉恩酒店

比较运算符工作如果两个操作数的值相等,则条件变为真

您试图比较错误的数据类型1,2无效

尝试“1,2”==“1,2”将给出正确的结果


1,2不是单参数。

2==1
->
False
。现在看看会发生什么?您正在用表达式
1
(2==1)
2
@OliverCharlesworth定义一个元组,谢谢!这就澄清了,我不知道这是定义元组的有效方法。元组,除了空元组之外,都是由逗号定义的。如果元组不明确(或者对于没有任何逗号的空元组),只需在元组周围加括号即可。这确实是一个意外运算符执行顺序的有趣例子。虽然我想在大多数情况下,这是一种更可取的方法。
1,2
是一个有效值,生成与
(1,2)
相同的元组。海报的问题在于,逗号的优先级低于相等性测试,因此,在进行比较之前,中间项将相互比较,而不是分组为单独的三元组。