查找标识符的值

时间:2017-07-11 13:23:35

标签: python

获取第一个 id 的值很明显。如何在 函数中获取第二个ID 的值是

   id(False)
=> 140399586313184
   id(id(False))
=> 140399542553456
   id(False) is id(False)
=> False

Python文档:

operator.is_(a, b)

返回a是b。测试对象标识。

Operator.is_(a,b)执行函数 id(False)两次。 id(False)内存中的值不同。 ID运行时我想知道 B id(False)是id(False)

2 个答案:

答案 0 :(得分:1)

is不是比较整数(或大多数类型)的有效方法。 id(False) is id(False)的两边都生成相同的整数,但它们是两个不同的整数对象(因为该值超出了应用小整数缓存的范围)。 is因此正确返回False。如果您使用==比较了值,则结果为True。

答案 1 :(得分:1)

id (False) is id (False)比较id()函数返回的id 的引用。它不会比较False的引用。

你可以在python中使用任何大整数获得类似的效果,而不仅仅是id。

在C实现的情况下,这些是大整数(内存地址),它们的实际值没有用,并且是特定于实现的。

具有相同的两个整数是否具有相同的引用同样是特定于实现的,并且不能保证。 C实现做了一些优化,但只有" small"数字。见"is" operator behaves unexpectedly with integers