is 同一性判定
最終更新:2026-09-22
is 同一性判定
is は 2 つの参照が同じオブジェクトを指しているか(id が同じか)を判定する。
| カテゴリ | 演算子 |
|---|---|
| 種類 | 演算子 |
| Python バージョン | all |
📝 構文
a is b
▶ 例
下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:
実行結果:
True
False
💡 ヒント is None / is not None を使う。None の比較に == を使わない。
💡 関連するケース
さらに多くのケースは近日公開予定です。
❓ よくある質問
Q整数の比較で is の結果が不安定なのはなぜ?
ACPython は小さい整数(-5 から 256)をキャッシュするため、同じリテラルは通常同じオブジェクトになります。範囲外ではオブジェクトが再利用されるか保証されず、実装やコンパイラ最適化によって異なる場合があります。数値の比較は一律に `==` を使いましょう。
Qis はいつ使うべきですか?
A2つの場面だけです:`None` の判定(`x is None` / `x is not None`)、および `True`/`False` や自作のシングルトンの比較。内容の等価判定は一律に `==` を使います。
Qカスタムクラスが __eq__ を実装していない場合、`==` と `is` は同じですか?
A同じです。デフォルトの `==` は同一性比較に退化します(`is` と等価)。ただし `__eq__` を定義すると、両者は異なる可能性が出てきます。