2017-12-07 5 views
0

私は、次のについて混乱しています:混乱比較出力

>>> 1,2 == 1,2 
(1, False, 2) 

==オペレータが唯一のブールを返す必要があります(あるいは、少なくとも私はそう思いました)。 私は(True, True)という行がa,b = 1,2のように処理されているものと仮定していましたが、代入の代わりに比較を行っていました。または、エラーが発生しました。しかし、間違いなく(1, False, 2)

誰でもここで何が起こっているのか説明できますか?

+0

'2 == 1' - >' False'。何が起こるか見てみましょう。 – tkausl

+2

式 '1'、'(2 == 1) '、' 2'でタプルを定義しています。 –

+0

@OliverCharlesworth、ありがとう!それは、タプルを定義するための有効な方法であるかどうかはわかりませんでした。 –

答えて

2

これ:

1,2 == 1,2 

それぞれ12 == 12を含有する3つの要素タプルとして評価されます。これはLanguage Referenceに記載されている

(1, 2) == (1, 2) 

:あなたはここで、括弧のカップル使用する必要がある場合を除き

をするとき、リストの一部または設定の表示、少なくとも一つのコンマの収量を含む発現リスト タプル。タプル の長さは、リスト内の式の数です。式は左から右に評価された です。

-1

@alec_djinn比較オペレータワーク二つのオペランドの値が等しい場合には、条件が真となります。

間違ったデータ型を比較しようとしています1,2が無効です。

'1,2' == '1,2'を試してみると正しい結果が得られます。

1,2は単一の引数ではありません。

+1

'1,2'は'(1,2) 'と同じタプルを生成する有効な値です。ポスターの問題は、カンマが等価性テストよりも優先度が低いため、中間の用語は比較前に別々のトリプルにグループ化されるのではなく、互いに比較されるということです。 –