2.3.3 比較

比較演算は全てのオブジェクトでサポートされています。比較演算子は 全て同じ演算優先度を持っています (ブール演算より高い演算優先度です)。 比較は任意の形で連鎖させることができます; 例えば、x < y <= zx < y および y <= z と等価で、違うのは y が一度だけしか評価 されないということです (どちらの場合でも、 x < y が偽となった場合には z は評価されません) 。

以下のテーブルに比較演算をまとめます:

演算 意味 注釈
< より小さい
<= 以下
> より大きい
>= 以上
== 等しい
!= 等しくない (1)
<> 等しくない (1)
is 同一のオブジェクトである
is not 同一のオブジェクトでない

注釈:

(1)
<> および != は同じ演算子を別の書き方にしたものです。 != のほうが望ましい書き方です; <> は廃止すべき書き方です。

数値型間の比較か文字列間の比較でないかぎり、異なる型のオブジェクトを 比較しても等価になることはありません; これらのオブジェクトの順番付けは 一貫してはいますが任意のものです (従って要素の型が一様でないシーケンスを ソートした結果は一貫したものになります)。 さらに、(例えばファイルオブジェクトのように) 型によっては、 その型の 2 つのオブジェクトの不等性だけの、縮退した比較の概念 しかサポートしないものもあります。繰り返しますが、 そのようなオブジェクトも任意の順番付けをされていますが、 それは一貫したものです。被演算子が複素数の場合、演算子 <<=> および >= は 例外 TypeError を送出します。

あるクラスのインスタンス間の比較は、そのクラスで __cmp__() メソッドが定義されていない限り等しくなりません。 このメソッドを使ってオブジェクトの比較方法に影響を及ぼすための 情報については Python リファレンスマニュアル を参照してください。

実装に関する注釈: 数値型を除き、異なる型のオブジェクトは 型の名前で順番付けされます; 適当な比較をサポートしていないある型の オブジェクトはアドレスによって順番付けされます。

同じ優先度を持つ演算子としてさらに 2 つ、シーケンス型でのみ "in" および "not in" が サポートされています (以下を参照)。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。