「is」演算子を理解する [重複] 質問する

「is」演算子を理解する [重複] 質問する

演算子isは変数の値ではなく、インスタンス自体と一致します。

それは本当は何を意味するのでしょうか?

という名前の 2 つの変数を宣言しxy両方の変数に同じ値を割り当てましたが、is演算子を使用すると false が返されます。

説明が必要です。これが私のコードです:

x = [1, 2, 3]
y = [1, 2, 3]

print(x is y)  # False

ベストアンサー1

演算子が何isをテストするのか誤解しています。2つの変数が同じオブジェクトただし、2 つの変数が同じ値を持つ場合は除きます。

のドキュメントからisオペレーター:

演算子isと はis notオブジェクトの同一性をテストします。とが同じオブジェクトであるx is y場合にのみ true になります。xy

代わりに演算子を使用します==:

print(x == y)

これは を印刷しますTruexyは2つですリスト:

x[0] = 4
print(y)  # prints [1, 2, 3]
print(x == y)   # prints False

を使用する場合id()関数x次のようにy異なる識別子が表示されます。

>>> id(x)
4401064560
>>> id(y)
4401098192

yしかし、に割り当てるとx、両方とも同じオブジェクトを指します。

>>> x = y
>>> id(x)
4401064560
>>> id(y)
4401064560
>>> x is y
True

is両方が同じオブジェクトであることを示すため、 を返しますTrue

Pythonでは、名前は値を参照する単なるラベルである; 複数の名前が同じオブジェクトを指すことができます。is2 つの名前が同じオブジェクトを指しているかどうかを通知します。==2 つの名前が同じ値を持つオブジェクトを参照しているかどうかを通知します。

おすすめ記事