admin 管理员组

文章数量: 1087652


2024年4月13日发(作者:编程包括哪些)

老男孩IT教育,只培养技术精英

Python中is与双等于号“==”的区别

Python有两个用于相等比较的运算符,“is”和“==”(等于)。在这篇文章中,我将

带你们了解Python中“is”和“==”的区别,并通过几个简单地例子说明应该在什么时

候使用它们,我们先来看一个情景:

当我还是一个孩子的时候,我们的邻居家有两只双胞胎猫。

这两只猫看起来看起来完全一样 - 同样的木炭毛,同样敏锐的绿眼睛。撇开一些个性

怪癖,单从它们的外表根本无法区分它们。但他们确确实实是两只不同的猫,两个不同的

生物,尽管它们看起来完全一样。

就如相等和相同在意思上是有差异的,理解这种差异对理解Python中的操作符“is”

和“==”是很重要的。

“==”更侧重于检测相等:如果这些猫是Python对象,我们用“==”比较它们,

我们会得到“两只猫是相等的”。

“is”侧重于比较相同:如果我们用“is”比较它们,我们会得到“这是两只不同的猫”。

在我把所有的东西都用猫作为类比之前,让我们来看看一些真正的Python代码。

首先,我们将创建一个新的列表对象并将其命名为a,然后定义另一个变量b指向同

一列表的对象:

SHAPE * MERGEFORMAT

老男孩IT教育,只培养技术精英

我们来看看这两个变量,我们可以看到它们指向相同的列表。

SHAPE * MERGEFORMAT

因为两个列表对象看起来相同,所以当我们使用“==”运算符比较它们的相等性时,

我们会得到预期的结果:

SHAPE * MERGEFORMAT

然而,这并没有告诉我们a和b是否真的指向同一个对象。当然,我们知道它们是指

向同一个对象的,因为我们之前给它们分配了相同的对象,但是假设我们不知道我们会发

现什么?

那么将两个变量用“is”操作符进行比较,这会证明两个变量是指向同一个列表对象

的:

SHAPE * MERGEFORMAT

我们来看看当我们创建列表对象的相同副本时会发生什么,我们可以通过在现有列表

上调用list()来创建一个名为c的副本:

SHAPE * MERGEFORMAT

您将再次看到我们刚刚创建的新列表看起来与a和b指向的list对象相同:

SHAPE * MERGEFORMAT


本文标签: 对象 列表 指向 相等 创建