根据我的解释,“是”基本上是给定值与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运算符。