xとyは2つの変数です。
_x == y
_を使用してそれらが等しいかどうかを確認できますが、同じIDを持っているかどうかを確認するにはどうすればよいですか?
例:
_x = [1, 2, 3]
y = [1, 2, 3]
_
Xとyが等しいため、_x == y
_はTrueになりますが、xとyは同じオブジェクトではありません。sameObject(x, y)
のようなものを探しています。その場合はFalseであると思われます。
is
を使用して、2つのオブジェクトが同じIDを持っているかどうかを確認できます。
>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> x == y
True
>>> x is y
False
Mark Byersからの回答に基づいて構築するには:
IDを区別するためのis
評価は、変数にプリミティブ型ではなくオブジェクトが含まれている場合に機能します。
_object_one = ['d']
object_two = ['d']
assert object_one is object_two # False - what you want to happen
primitive_one = 'd'
primitive_two = 'd'
assert primitive_one is primitive_two # True - what you don't want to happen
_
プリミティブも比較する必要がある場合は、組み込みのid()
関数を使用することをお勧めします。
Python docs から:
オブジェクトの「アイデンティティ」を返します。これは、その存続期間中、このオブジェクトに対して一意で一定であることが保証されている整数です。
だからそれはこれになります:
_assert id(primitive_one) == id(primitive_two) # False
_