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__` を定義すると、両者は異なる可能性が出てきます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%