Python“is”语句:发生了什么?

2024-04-25 10:01:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我很惊讶当

[] is not []

计算结果为True

代码中发生了什么?notis语句到底在做什么?


Tags: 代码trueisnot语句计算结果
3条回答

a is not b是一个特殊的运算符,相当于not a is b

如果a和b绑定到同一对象,则运算符a is b返回True,否则返回False。当您创建两个空列表时,会得到两个不同的对象,因此is返回False(因此is not返回True)。

is是身份比较。

==是等式比较。

您的语句将生成两个不同的列表,并检查它们是否是同一个实例,而不是同一个实例。如果使用==,则返回true,因为它们都是空列表。

描述这种情况发生原因的最佳方式是:

这是你的例子

>>> x = []
>>> y = []
>>> print(x is y)
... False

xy实际上是两个不同的列表,因此,如果向x中添加某些内容,则它不会出现在y

>>> x.append(1)
>>> print(x)
... [1]
>>> print(y)
... []

那么我们如何使(x is y)求值为真呢?

>>> x = []
>>> y = x
>>> print(x is y)
... True

>>> x.append(10)

>>> print(x)
... [10]
>>> print(y)
... [10]

>>> print(x is y)
... True

如果你想看看两个列表是否有相同的内容。。。

>>> x = []
>>> y = []
>>> print(x == y)
... True

>>> x.append(21)

>>> print(x)
... [21]
>>> print(y)
... []

>>> print(x == y)
... False

>>> y = [21]
>>> print(x == y)
... True

相关问题 更多 >