docs中的身份比较描述了is
表达式的结果依赖于对象身份。你知道吗
The operators
is
andis not
test for an object’s identity:x is y
is true if and only ifx
andy
are the same object. An Object’s identity is determined using theid()
function.x is not y
yields the inverse truth value.
但下面的代码显示了不同的结果。你知道吗
id(object()) == id(object()) # True
object() is object() # False
object() is object()
结果必须是True
,因为文档描述。你知道吗
调用
object
构造函数(我的意思是object()
),每次都分配和构造一个新的对象实例,该实例在当前范围内具有新的可用的id。你知道吗Python垃圾收集器,在对象变得不可用时(例如,超出范围、解构对象等)收集对象,并释放分配的内存。因此,它们的id将可用于将来构建的下一个对象。你知道吗
在下面的片段中
在第一行中,同时创建两个对象进行比较,然后由垃圾收集器收集。因此,它们具有不同的id,并且它们不相同。你知道吗
在第2行中,创建第一个对象,提取它的id进行比较,然后解构它(由垃圾收集器收集)。第二个对象使用第一个可用的id,这是刚刚从第一个对象收集的id。所以他们有相同的id!你知道吗
相关问题 更多 >
编程相关推荐