Python - 身份运算符


Python 有两个身份运算符isis not。两者都返回相反的布尔值。如果两个操作数对象共享相同的内存位置,则“in”运算符的计算结果为 True。可以通过“id()”函数获取对象的内存位置。如果两个变量的 id() 相同,则“in”运算符返回 True(因此,is not 返回 False)。

a="TutorialsPoint"
b=a
print ("id(a), id(b):", id(a), id(b))
print ("a is b:", a is b)
print ("b is not a:", b is not a)

它将产生以下输出-

id(a), id(b): 2739311598832 2739311598832
a is b: True
b is not a: False

列表和元组对象Behave不同,这在第一个实例中可能看起来很奇怪。在以下示例中,两个列表“a”和“b”包含相同的项目。但他们的 id() 不同。

a=[1,2,3]
b=[1,2,3]
print ("id(a), id(b):", id(a), id(b))
print ("a is b:", a is b)
print ("b is not a:", b is not a)

它将产生以下输出-

id(a), id(b): 1552612704640 1552567805568
a is b: False
b is not a: True

列表或元组仅包含单个项目的内存位置,而不包含项目本身。因此,“a”在某个位置包含 10,20 和 30 个整数对象的地址,该地址可能与“b”的地址不同。

print (id(a[0]), id(a[1]), id(a[2]))
print (id(b[0]), id(b[1]), id(b[2]))

它将产生以下输出-

140734682034984 140734682035016 140734682035048
140734682034984 140734682035016 140734682035048

由于“a”和“b”的两个不同位置,即使两个列表包含相同的数字, “ is ”运算符也会返回 False。