为什么“ []是[]”返回false

时间:2019-12-12 10:35:29

标签: python python-3.x python-3.7

根据我的解释,“是”基本上是给定值与python在内存中为其分配的值之间的比较。该值对于该会话来说是相同的,只是该会话是相同的。

>>> id([])
139764799146312
>>> id([])
139764799146312

我们可以对ID进行==比较:

>>> id([]) == id([])
True

这将返回false,因为它们实际上是不同的值(按预期):

>>> id([]) == []
False

您可以检查这些值是否相等:

>>> [] == []
True

但是使用is运算符时不会返回true:

>>> [] is []
False

我认为这是因为id([])与[]不同,因此分配了不同的值,但是

>>> id([]) is id([])
False

还返回false

>>> id([]) is 139764799146312
False
>>> id([]) == 139764799146312
True

另外,我似乎无法使它们匹配:

>>> [] == id([])
False
>>> [] is id([])
False

但是其他事情可以按预期进行:

>>> 'a' is 'a'
True

在这种情况下实际发生了什么? []是一种具有自己逻辑的特例,有点类似于NULL在数据库中的区别。

我想不出一个实际的例子,您需要它,但是我仍然想知道发生了什么。

http://net-informations.com/python/iq/is.htm

edit:由于已重复,因此已关闭-明确地针对[],而不是IS运算符。

0 个答案:

没有答案
相关问题