Python - 身份运算符



Python 身份运算符

身份运算符比较对象以确定它们是否共享相同的内存并引用相同的对象类型(数据类型)。

Python 提供了两个身份运算符;我们已将它们列出如下:

  • 'is' 运算符
  • 'is not' 运算符

Python 'is' 运算符

如果两个操作数对象共享相同的内存位置,则 'is' 运算符计算结果为 True。可以使用 "id()" 函数获取对象的内存位置。如果两个变量的 "id()" 相同,则 "is" 运算符返回 True。.

Python 身份 'is' 运算符示例

a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
c = a

# Comparing and printing return values
print(a is c)
print(a is b)

# Printing IDs of a, b, and c
print("id(a) : ", id(a))
print("id(b) : ", id(b))
print("id(c) : ", id(c))

它将产生以下输出

True
False
id(a) :  140114091859456
id(b) :  140114091906944
id(c) :  140114091859456

Python 'is not' 运算符

如果两个操作数对象不共享相同的内存位置或两个操作数不是相同的对象,则 'is not' 运算符计算结果为 True。

Python 身份 'is not' 运算符示例

a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
c = a

# Comparing and printing return values
print(a is not c)
print(a is not b)

# Printing IDs of a, b, and c
print("id(a) : ", id(a))
print("id(b) : ", id(b))
print("id(c) : ", id(c))

它将产生以下输出

False
True
id(a) :  140559927442176
id(b) :  140559925598080
id(c) :  140559927442176

Python 身份运算符示例及说明

示例 1

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() 不同。

示例 2

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" 的位置不同。

示例 3

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。

广告