Python 中有哪些不同的身份运算符类型?

Python 中有哪些不同的身份运算符类型?

Python 中,除了基本的算术运算符和比较运算符之外,还有一种非常重要的运算符,那就是身份运算符。与比较运算符不同,身份运算符是用于比较两个对象的状态而非值,是判断两个变量所引用的对象是否为同一对象的工具。Python 中有三种不同的身份运算符: isis not,以及 id() 函数。下面将对这三种类型分别进行说明:

阅读更多:Python 教程

is 身份运算符

is 身份运算符被用于测试两个变量是否引用自同一个对象(内存地址相同)。当两个变量绑定在同一对象上时返回 True,否则返回 False。

以下是一个简单的例子,展示如何使用 is 运算符判断两个变量是否引用同一对象:

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

print(a is b)   # True
print(a is c)   # False

在上面的代码中,我们定义了三个列表变量 abc,其中 ab 绑定到同一个列表 [1, 2, 3] 上,而 c 绑定到一个新的、与 a 不同的列表 [1, 2, 3] 上。在第二个 print() 语句中,我们使用 is 运算符判断 ac 是否指向同一对象,由于它们实际上引用两个不同的列表对象,所以输出结果是 False。

is not 身份运算符

is 身份运算符相反,is not 身份运算符用于测试两个变量是否引用不同的对象。当两个变量绑定在不同的对象上时返回 True,否则返回 False。以上面的例子为例,在第二个 print() 语句中如果使用 is not 身份运算符,可以输出相反的结果:

print(a is not c)   # True

这是因为 ac 绑定到不同的对象上,所以 a is not c 的结果为 True。注意,这里的 is not 是一个整体的运算符,不能把它分开使用。

id() 函数

id() 函数是一个内置函数,它返回一个对象的唯一标识符(或称内存地址)。这个标识符是一个整数,通常可以作为一个对象的唯一身份证明。在 Python 中,每个对象在创建时都会被分配一个唯一的标识符,直到对象被销毁时才会释放。

下面是一个使用 id() 函数和身份运算符的例子:

x = [1, 2, 3]
y = x
z = [1, 2, 3]

print(id(x))
print(id(y))
print(id(z))
print(x is y)
print(x is z)

在上面的代码中,我们定义了三个列表变量 xyz,其中 xy 绑定到同一个列表 [1, 2, 3] 上,而 z 绑定到一个新的列表 [1, 2, 3] 上。我们通过 id() 函数分别打印出 xyz 的内存地址,然后使用 is 运算符比较 xyxz 是否引用了同一个对象。

输出结果如下:

139800852734080
139800852734080
139800134057312
True
False

根据输出结果,可以看出,xy 引用了同一个列表对象,它们的内存地址相同;而 xz 引用了不同的列表对象,它们的内存地址不同。这进一步说明了身份运算符的作用,以及 id() 函数如何获取对象的唯一标识符。

结论

Python 中的身份运算符是用来比较两个对象的状态而非值,主要用于判断两个变量是否引用同一对象。is 身份运算符用于测试两个变量是否引用自同一个对象,is not 身份运算符用于测试两个变量是否引用不同的对象,而 id() 函数用于获取一个对象的唯一标识符。当我们需要比较两个变量是否引用同一个对象时,可以使用 is 运算符,当我们需要比较两个变量是否引用不同的对象时,可以使用 is not 运算符;而如果需要获取一个对象的唯一标识符时,可以使用 id() 函数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程