1. ホーム
  2. python

[解決済み] Pythonの "is "演算子を理解する

2022-08-22 06:16:51

質問

その is 演算子は変数の値ではなく インスタンスそのものにマッチします。

実際のところはどうなのでしょうか?

という名前の2つの変数を宣言しました。 xy という2つの変数に同じ値を代入していますが is 演算子を使うと false を返します。

明確にする必要があります。以下は私のコードです。

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

print(x is y)  # It prints false!

どのように解決するのですか?

あなたは is 演算子が何をテストするのかを誤解しています。この演算子は、2 つの変数が 同じオブジェクト を指しているかどうかを調べますが、2つの変数が同じ値を持っているかどうかは調べません。

のドキュメントから is 演算子 :

演算子 isis not はオブジェクトの同一性をテストします。 x is y が真である場合、そして x であり y は同じオブジェクトです。

を使用します。 == 演算子を使います。

print(x == y)

これは True . x そして y は、2つの 別々の のリストです。

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

もしあなたが id() 機能 を見ると xy は異なる識別子を持ちます。

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

を指定することができますが、仮に yx であれば、どちらも同じオブジェクトを指していることになります。

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

is は両方とも同じオブジェクトであることを示しています。 True .

Pythonでは覚えておいてください。 の名前は、値を参照するラベルに過ぎません。 です。複数の名前が同じオブジェクトを指すことができます。 is は二つの名前が一つの同じオブジェクトを指しているかどうかを教えてくれます。 == は、二つの名前が同じ値を持つオブジェクトを指しているかどうかを示します。