演算子
is
は変数の値ではなく、インスタンス自体と一致します。
それは本当は何を意味するのでしょうか?
という名前の 2 つの変数を宣言しx
、y
両方の変数に同じ値を割り当てましたが、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 になります。x
y
代わりに演算子を使用します==
:
print(x == y)
これは を印刷しますTrue
。x
とy
は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では、名前は値を参照する単なるラベルである; 複数の名前が同じオブジェクトを指すことができます。is
2 つの名前が同じオブジェクトを指しているかどうかを通知します。==
2 つの名前が同じ値を持つオブジェクトを参照しているかどうかを通知します。