Python 身份运算符
Python有两个身份运算符is和is 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
列表和元组对象不同,这在第一眼看起来可能很奇怪。在下面的例子中,两个列表 “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。