在第一个示例中,
[]不
[]完全 是因为 列表是可变的。如果不是,他们可以安全地映射到同一个对象。
在第二个示例中,
id([])创建一个列表,获取ID,然后取消分配该列表。围绕它的第二次 再次
创建一个列表,但是将“放在同一位置”,因为没有发生太多其他事情。
id仅在对象的生存期内有效,在这种情况下,其生存期几乎为零
从id上的文档:
这是一个整数(或长整数),在此对象的生存期内,此整数保证是唯一且恒定的。具有不重叠生存期的两个对象可能具有相同的id()值。
已评论拆解:
0 LOAD_GLOBAL 0 (id) # load the id function 3 BUILD_LIST 0 # create the first list 6 CALL_FUNCTION 1 # get the id 9 LOAD_GLOBAL 0 (id) # load the id function 12 BUILD_LIST 0 # create the second list 15 CALL_FUNCTION 1 # get the id 18 COMPARE_OP 2 (==) # compare the two ids 21 RETURN_VALUE # return the comparison
请注意没有
STORE_FAST保留列表。因此,在传递给
id函数后立即将其丢弃。



